无法在PreapreForSegue中设置NavigationController的Outlet Value TopViewController

时间:2012-06-05 07:32:43

标签: ios xcode4.2 storyboard

我的项目有以下情况:

[预览视图控制器] - (模态) - >导航控制器 - (顶部) - > [照片设置视图控制器]

在[预览视图控制器]中,我有一个按钮,它将执行模态segue(标识符=“PreviewToSetting”),我在[预览视图控制器] .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的文本未设置为“TEST”,因为我认为它应该是,任何人都知道为什么?

更多信息:

  • lblAudio是PhotoSettingViewController(UITableViewController Subclass)中表格部分中静态表格单元格中的UILabel Outlet属性
  • lblAudio被sycthesized并定义为

    @property(强,非原子)IBOutlet UILabel * lblAudio;

  • lblAudio IBOutlet正确绑定,如果我重新定义viewWillAppear方法中的text属性,如self.lblAudio.text = @“TEST”,标签文本将正确地更改为“TEST”。

1 个答案:

答案 0 :(得分:0)

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

的事情

NSString *labelText等标签文字创建一个属性,并将值@"TEST"分配给该属性,并在viewWillAppear:方法中将其指定给标签将执行您的工作