首先,我使用 Storyboard 创建了两个 uiviewcontroller:firstviewcontroller 和 secondviewcontroller。并使用 xcode 将 uinavigationcontroller 嵌入到 secondviewcontroller(编辑 --> 嵌入 --> 导航 Controller )。然后,我还想使用 segue 将值从 first 传递到 second。有代码:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"passValue"])
{
secondViewController *saveViewController = [segue destinationViewController];
[saveViewController setValue:data forKey:@"data"];
}
}
但是会报错,log是: 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类与关键数据的键值编码不兼容。”/p>
但是,当我删除我使用Xcode插入的导航 Controller 并通过代码定义导航栏时,这个问题就会消失。我想原因是真正的 destinationViewController 是 navigationcontroller 而不是 secondviewcontroller。那么如果我想保留 Xcode 嵌入的导航 Controller ,如何解决这个问题?
最佳答案
你是对的,destinationViewController 将是一个你嵌入了 secondViewController 的 UINavigationController。也许试试看:
secondViewController *saveViewController = [[segue destinationViewController] topViewController];
关于ios - 当我使用 prepareForSegue 将值传递给目标 Controller 时,出现了一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12034093/