我正在尝试使用storyboard segue传递值。我的故事板是导航控制器 - >视图控制器 - >查看控制器。
我确信其他所有内容都已正确设置。在模拟器上测试之前我没有任何错误,但随后会出现:
[RunViewController2 topViewController]:无法识别的选择器发送到实例0x109d6a0b0 2014-03-06 22:54:31.261 RunPal [22381:70b] * 由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [RunViewController2 topViewController]:无法识别的选择器发送到实例0x109d6a0b0'
我在第一个视图控制器中使用的代码是:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"passSegmentedValue"]){
UINavigationController *nav = [segue destinationViewController];
RunViewController2 *runVC2 = (RunViewController2 *)nav.topViewController;
run2VC.weekIdentifier = ((UISegmentedControl*) sender).selectedSegmentIndex;
}
}
答案 0 :(得分:0)
试试这个:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"passSegmentedValue"]){
RunViewController2 *runVC2 = [segue destinationViewController];
run2VC.weekIdentifier = ((UISegmentedControl*) sender).selectedSegmentIndex;
}
}
答案 1 :(得分:0)
通过使用行po
的断点,在调试控制台中使用RunViewController2 *runVC2 = [segue destinationViewController];
命令检查目标控制器的类型。
这肯定会告诉你目标不是UINavigationController
类型,因此调用topViewController方法会导致崩溃。您的目标视图控制器可能类型为RunViewController2
,实际上与Armand DOHM提到的一样。