prapareForSegue无法为目标控制器设置任何属性

时间:2014-07-24 13:26:49

标签: ios objective-c xcode

我有这个奇怪的问题,我无法为目标视图设置属性。我做了一千次。 这是代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if([segue.identifier isEqualToString:@"InboxSegue"]){
        InboxViewController *controller = (InboxViewController *)segue.destinationViewController;
        controller.ERA = ERA;

    }

}

我已经初始化了两个控制器中的所有属性。我做了调试,所有变量都有值而不是nil。

错误: ReadLater [43713:60b] * 由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [UINavigationController setERA:]:无法识别的选择器发送到实例0x10976e760&#39 ;

2 个答案:

答案 0 :(得分:2)

错误原因告诉您segue的目标视图控制器实际上是导航控制器。

所以你需要在它的导航堆栈中访问你的视图控制器,如下所示:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if([segue.identifier isEqualToString:@"InboxSegue"]){

        UINavigationController * navigationController = (UINavigationController *)[segue destinationViewController];
        InboxViewController * inboxViewController = [[navigationController viewControllers] objectAtIndex:0];
        inboxViewController.ERA = ERA;

    }

}

答案 1 :(得分:0)

检查如果您已将“InboxSegue”正确分配给特定控制器,则会在segue.destinationViewController给出其他控制器然后预期的控制器时发生