1

ここに画像の説明を入力Hello Guys 実際には、UIScrollView 内にある UIViewController クラス ビューのサブビューとして、多くの UIView カスタム クラス オブジェクトがあります。そして、UIView カスタム クラス オブジェクトの色を確認したいと思います。私が使用するコードは以下のとおりです:-

    - (void) RectColorCheck:(id)sender
{
    NSArray *subViews = [[NSArray alloc] init];
    subViews = [self.scrollView subviews];
    NSLog(@"array----%@",subViews);

        for (viewCG in subViews) 
        {
            if ([viewCG.backgroundColor isEqual: [UIColor darkGrayColor]])
            {
                [viewCG setBackgroundColor:[UIColor orangeColor]];
            }
        }
}

ただし、viewCG のサブビュー配列が null であると機能しません。そして、viewCG サブビューにカスタム クラス (UIView) オブジェクトを追加する以下のコード:-

for (int i=0; i<[mapDataArr count]; i++)
    {
        X = [[[mapDataArr objectAtIndex:i] valueForKey:@"X"] intValue];
        Y = [[[mapDataArr objectAtIndex:i] valueForKey:@"Y"] intValue];
        W = [[[mapDataArr objectAtIndex:i] valueForKey:@"W"] intValue];
        H = [[[mapDataArr objectAtIndex:i] valueForKey:@"H"] intValue];

        circleVwObj = [[CircleView alloc] init];
        circleVwObj.frame = CGRectMake(X,Y, W, H);
        circleVwObj.tag = i;

        circleVwObj.lbl.frame = CGRectMake(2,2, circleVwObj.frame.size.width, circleVwObj.frame.size.height/2);
        circleVwObj.lbl.text = [[mapDataArr objectAtIndex:i] valueForKey:@"standId"];
        NSLog(@"lbl text---%@", circleVwObj.lbl.text);
        circleVwObj.lbl.font = [UIFont boldSystemFontOfSize:11];
        circleVwObj.lbl.backgroundColor = [UIColor clearColor];
        circleVwObj.lbl.textColor = [UIColor whiteColor];
        circleVwObj.lbl.textAlignment = UITextAlignmentCenter;
        circleVwObj.lbl.minimumFontSize = 11;
        circleVwObj.lbl.adjustsFontSizeToFitWidth = YES;
        circleVwObj.lbl.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

        [self.viewCG addSubview:circleVwObj];
    }
4

1 に答える 1

1

subviews配列がの場合、それも初期化されていない可能性がnil非常に高くなります。self.viewCGnil

また、isEqual:色を比較するために使用する必要があります。演算子は、==ポインターの同一性を比較するだけです (この特定のケースでは実際に期待される結果が得られる可能性がありますが、壊れる可能性があります)。

于 2012-11-05T09:54:03.947 に答える