如何设置跟随segue的UILabel的值?

时间:2012-03-06 00:23:01

标签: ios

我有一个简单的故事板,由两个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 +点击并拖动故事板中的东西以将它们连接起来。)

有更好的方法吗?

1 个答案:

答案 0 :(得分:27)

由于在连接目标视图控制器上的标签的IBOutlet之前调用prepareForSegue,因此未设置UILabel文本。因此,此时标签仍为nil(并向nil发送消息无效。)

您应该做的是在目标视图控制器上创建一个新属性来存储字符串,并在prepareForSegue中设置此属性。然后在目标视图控制器的viewDidLoad方法中,使用该属性的值来设置UILabel的text属性。