我对viewWithTag
有疑问。我使用此代码以编程方式从我的故事板中调用UIViewController
。然后我想设置2个imageView,我使用viewWithTag。
UIStoryboard *storyboard = self.storyboard;
BattleViewController *svc = [storyboard instantiateViewControllerWithIdentifier:@"BattleViewController"];
UIImageView*newImage=(UIImageView*)[svc.view viewWithTag:123];
newImage.image=[UIImage imageNamed:@"1"];
UIImageView*img2=(UIImageView*)[svc.view viewWithTag:234];
img2.image=[UIImage imageNamed:@"2"];
[self presentViewController:svc animated:YES completion:nil];
在此之后,视图控制器被正确调用,但是两个imageView都是空的,上面没有任何内容。
答案 0 :(得分:3)
问题可能是你这么做太早了。首次创建svc
(您的BattleViewController实例)时,它甚至没有视图。进行设置,以便您可以在此处将图像文件名传递给视图控制器,但让视图控制器本身在其自己的viewDidLoad
中显示图像。
答案 1 :(得分:0)
BattleViewController是什么样的视图? 这是一个tableview吗?这是另一种观点吗? 您从标记中查看的视图可能位于BattleViewController的子视图中。
试试这个:
NSLog(@"subviews = %@", svc.view.subviews)
这将输出您在svc中拥有的总观看次数。如果您有多个子视图,带有标记的图像可能位于其中一个子视图下(那么您可以这样做:
UIImageView*newImage=(UIImageView*)[[svc.view.subviews objectAtIndex:1] viewWithTag:123]];