iOS视图控制器与导航控制器之间的segue

时间:2014-03-06 23:04:11

标签: ios iphone objective-c

我正在尝试使用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;
   }
}

2 个答案:

答案 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提到的一样。