我有一个简单的 Storyboard ,由两个 UIViewController 组成,用一个 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
where display
是我的 UILabel 属性。
然而,这是行不通的,即使我只是 NSLog UILabel 的值,它也不会打印任何东西,这让我想知道 Controller 是否正在与 UILabel 通信......(我确实做了ctr+单击并拖动 Storyboard 中的东西以将它们连接起来。)
有更好的方法吗??
最佳答案
您的 UILabel 文本未被设置,因为 prepareForSegue
在目标 View Controller 上的标签的 IBOutlet 连接之前被调用。所以此时标签仍然是 nil
(并且向 nil
发送消息没有任何效果。)
您应该做的是在目标 View Controller 上创建一个新属性来存储字符串,并在 prepareForSegue
中设置此属性。然后在目标 View Controller 的 viewDidLoad
方法中,使用该属性的值来设置 UILabel 的 text
属性。
关于ios - 如何在 segue 之后设置 UILabel 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9576177/