Ios 当我使用prepareForSegue将值传递给aim控制器时,存在一些问题

Ios 当我使用prepareForSegue将值传递给aim控制器时,存在一些问题,ios,uinavigationcontroller,storyboard,uistoryboardsegue,Ios,Uinavigationcontroller,Storyboard,Uistoryboardsegue,首先,我使用故事板创建两个uiviewcontroller:firstviewcontroller和secondviewcontroller。并使用xcode将uinavigationcontroller嵌入secondviewcontroller(编辑器-->嵌入-->导航控制器)。然后,我还想使用segue将值从第一个传递到第二个。代码如下: -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { i

首先,我使用故事板创建两个uiviewcontroller:firstviewcontroller和secondviewcontroller。并使用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"];
    }
}
但将报告错误,日志为: 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合密钥数据的密钥值编码要求。”

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

没错,destinationViewController将是嵌入了secondViewController的UINavigationController。也许可以试试:

secondViewController *saveViewController = [[segue destinationViewController] topViewController];