如何在继续之后设置UILabel的值?

我有一个简单的故事板由两个UIViewControllers组成,用segue连接它们。

UIVC1 – > UIVC2

我试图设置UIVC2上的UILabel等于存储在UIVC1中的string。 我试图在prepareForSegue方法中传递string,到目前为止我已经将它设置为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 +点击并拖动故事板中的东西来勾住它们。)

有一个更好的方法吗??

您的UILabel文本没有被设置,因为在目标视图控制器上连接您的标签的IBOutlet之前正在调用prepareForSegue 。 所以在那个时候,标签仍然是nil (并且发送消息到nil都没有效果)。

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