0

我想用不同的标签以编程方式创建多个 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。

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

类似的问题:

4

3 回答 3

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];
于 2013-10-23T13:16:31.833 回答
0

使用此代码获取特定的子视图tag

UIImageView *imgViewRef = (UIImageView *)[self.view viewWithTag:TAG_NUMBER];
于 2013-10-23T13:21:29.450 回答
0

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

 for (UIImageView *imgView in self.view.subviews) {
        if ([imgView isKindOfClass:[UIImageView class]]) {
            NSLog(@"imageview with tag %d found", imgView.tag);
        }
    }
于 2013-10-23T13:21:29.470 回答