6

首先,我使用故事板创建两个 uiviewcontroller:firstviewcontrollersecondviewcontroller。并使用 xcode 将uinavigationcontroller嵌入到secondviewcontroller 中(编辑器 --> 嵌入 --> 导航控制器)。然后,我还想使用 segue 将值从第一个传递到第二个。有代码:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"passValue"])
    {
        secondViewController *saveViewController = [segue destinationViewController];
        [saveViewController setValue:data forKey:@"data"];
    }
}

但是会报错,日志是: Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key data.'

但是,当我删除使用Xcode插入的导航控制器并通过代码定义导航栏时,这个问题就会消失。我猜原因是真正的 destinationViewController 是navigationcontroller而不是secondviewcontroller。那么如果我想保留Xcode嵌入的导航控制器,如何解决这个问题呢?

4

1 回答 1

12

你是对的,destinationViewController将是你嵌入secondViewController的UINavigationController。也许试试:

secondViewController *saveViewController = [[segue destinationViewController] topViewController];
于 2012-08-20T08:49:21.303 回答