viewWithTag不起作用

时间:2014-03-14 14:23:54

标签: ios objective-c

我对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都是空的,上面没有任何内容。

2 个答案:

答案 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]];