Ios 带标签的视图不';行不通
我的Ios 带标签的视图不';行不通,ios,objective-c,Ios,Objective C,我的viewWithTag有问题。我使用此代码以编程方式从故事板调用UIViewController。然后我想设置2个imageView,并使用viewWithTag UIStoryboard *storyboard = self.storyboard; BattleViewController *svc = [storyboard instantiateViewControllerWithIdentifier:@"BattleViewController"]; UIImageV
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是空的,上面没有任何内容。问题可能是您这样做太早了。当
svc
(您的BattleViewController实例)首次创建时,它甚至没有视图。进行设置,以便您可以在此处将图像文件名交给视图控制器,但让视图控制器本身在其自己的viewdiload
视图控制器是什么类型的?
这是桌面视图吗?这是另一种观点吗?
标签中的视图可能位于BattleViewController的子视图中
试试这个:
NSLog(@"subviews = %@", svc.view.subviews)
这将输出svc中的视图总数。如果有多个子视图,则带有标记的图像可能位于其中一个子视图下(因此:
UIImageView*newImage=(UIImageView*)[[svc.view.subviews objectAtIndex:1] viewWithTag:123]];
您确实在序列图像板中的BattleViewController中设置了标记,对吗?是的,在序列图像板中,我使用相同的标记设置了uiimageview,并且您100%确定这些图像(1.png和2.png)在您的主捆绑包中,对吗?尝试为您的
BattleViewController
类中的UIImageView
s创建IBOutlet
s,并将它们连接到您的故事板中。此外,正如马特在回答中所建议的,您应该在viewDidLoad
中处理这些图像的设置。正如加文所指出的,IBOutlet是一个更好的wa你说他应该在viewDidLoad
中处理这个问题是对的,但这不是他的问题,因为只要他调用svc.view
,就会导致视图被加载。@Gavin同意,这就是我说“可能”的原因: