我想用不同的标签以编程方式创建多个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。
我的问题 - 如何使用标签正确访问此视图?
类似的问题:
答案 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);
}
}