以编程方式创建多个UIImageViews

时间:2013-10-23 13:13:35

标签: ios iphone objective-c uiimageview programmatically-created

我想用不同的标签以编程方式创建多个UIImageViews,并将它们添加为主视图的子视图。

我在头文件中有一个UIImageView的属性:

@property (strong, nonatomic) UIImageView *grassImage;

然后我正在尝试创建多个视图:

for (int i=0;i<13;i++){

        grassImage = [[UIImageView alloc] init];

        int randNum = arc4random() % 320; //create random number for x position.

        [grassImage setFrame:CGRectMake(randNum, 200.0, 50.0, 25.0)];
        [grassImage setTag:i+100];
        [grassImage setImage:[UIImage imageNamed:@"grass"]];

        [self.view addSubview:grassImage];
    }

但是当我尝试使用标签访问此图片视图时,我只获得最后一个标签 - 112。

我的问题 - 如何使用标签正确访问此视图?

类似的问题:

3 个答案:

答案 0 :(得分:3)

您只获得最后一个,因为您一直在重新创建相同的视图。

摆脱该变量,并添加如下视图:

for (int i=0;i<13;i++){
    UIImageView *grassImage = [[UIImageView alloc] init];

    int randNum = arc4random() % 320; //create random number for x position.

    [grassImage setFrame:CGRectMake(randNum, 200.0, 50.0, 25.0)];
    [grassImage setTag:i+100];
    [grassImage setImage:[UIImage imageNamed:@"grass"]];

    [self.view addSubview:grassImage];
}

并获得意见:

UIImageView *imgView = [self.view viewWithTag:110];

答案 1 :(得分:0)

使用此代码获取特定tag

的子视图
UIImageView *imgViewRef = (UIImageView *)[self.view viewWithTag:TAG_NUMBER];

答案 2 :(得分:0)

由于您一次又一次地重新创建相同的图像,如果您访问grassImage,它将为您提供您创建的最后一个图像视图。相反,你可以得到像这样的imageview。

 for (UIImageView *imgView in self.view.subviews) {
        if ([imgView isKindOfClass:[UIImageView class]]) {
            NSLog(@"imageview with tag %d found", imgView.tag);
        }
    }