我有一个简单的故事板,由两个UIViewControllers组成,有一个segue连接它们。
UIVC1 - > UIVC2
我正在尝试将UIVC2上的UILabel设置为等于存储在UIVC1中的字符串。我正在尝试在prepareForSegue
方法中传递字符串,到目前为止,我已将其设置为UIVC2中的property
。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"mySegue"]) {
[segue.destinationViewController setDesc:[Brain description]];
}
}
UIVC2中的属性为desc.
然后,在我实施的setDesc
方法中,我运行self.display.text = self.desc
,其中display
是我的UILabel属性。
然而,这不起作用,即使我只是NSLog的UILabel的值,它也不会打印任何东西,这让我想知道控制器是否甚至与UILabel进行通信......(我确实这样做了ctr +点击并拖动故事板中的东西以将它们连接起来。)
有更好的方法吗?
答案 0 :(得分:27)
由于在连接目标视图控制器上的标签的IBOutlet之前调用prepareForSegue
,因此未设置UILabel文本。因此,此时标签仍为nil
(并向nil
发送消息无效。)
您应该做的是在目标视图控制器上创建一个新属性来存储字符串,并在prepareForSegue
中设置此属性。然后在目标视图控制器的viewDidLoad
方法中,使用该属性的值来设置UILabel的text
属性。