2

我的项目有以下场景:

[Preview View Controller] --(Modal)--> Navigation Controller --(Top)--> [Photo Setting View Controller]

在 [Preview View Controller] 中,我有一个将执行模态 segue 的按钮(identifier="PreviewToSetting"),我在 [Preview View Controller].m 文件中定义了 prepareForSegue 方法:

- (void)prepareForSegue:(UIStoryboardSegue *) segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"PreviewToSetting"]) {
        UINavigationController *unc=segue.destinationViewController;
        PhotoSettingViewController *psvc=(PhotoSettingViewController *) unc.topViewController;
        psvc.lblAudio.text=@"TEST";
    }
}

我在这个过程中设置了断点,并且确实看到上面的块运行没有错误。segue 确实成功执行并引导我进入“照片设置”场景,但是 lblAudio 的文本没有像我认为的那样设置为“测试”,有人知道为什么吗?

更多信息:

  • lblAudio 是 PhotoSettingViewController(UITableViewController 子类)中的一个 UILabel Outlet 属性,位于表格部分中的静态表格单元格中
  • lblAudio 被合成并定义为

    @property (strong,nonatomic)IBOutlet UILabel *lblAudio;

  • lblAudio IBOutlet 已正确绑定,因此如果我在 viewWillAppear 方法中重新定义 text 属性,如 self.lblAudio.text=@"TEST",标签文本将正确更改为 "TEST"。

4

1 回答 1

0

由于属性在 segue 时为 IBOutlet,因此未初始化。所以尝试做类似的事情

为类似标签的文本创建一个属性NSString *labelText并将值分配@"TEST"给该属性,然后在viewWillAppear:方法中将其分配给标签将完成您的工作

于 2012-06-05T09:18:13.970 回答