使用prepareForSegue方法打开模态segue崩溃应用程序

时间:2014-01-15 10:13:39

标签: objective-c ipad ios7 xcode5.0.1

我在我的应用程序中打开一个Modal视图控制器,这个模态视图控制器包含DatePicker。

应用的导航层次结构是

TabbarController->NavigationController->ViewController->ViewController

我已将第一个ViewController中的segue推送到第二个并在Modal segue中打开它。

我已将标识符推送到模态segue,并连接了自定义类。

但是当我编写prepareForSegue方法时,应用程序崩溃并出现以下错误。

  

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [DatePickerViewController viewControllers]:无法识别的选择器发送到实例0xa082360'

prepareForSegue的代码是

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"AddDate"])
    {
         UINavigationController *navigationController =segue.destinationViewController;

         DatePickerViewController *datePickerViewController =[[navigationController viewControllers] objectAtIndex:0];
         datePickerViewController.delegate = self;

    }
}

我已经按照本教程进行了Modal segue http://www.raywenderlich.com/5191/beginning-storyboards-in-ios-5-part-2

1 个答案:

答案 0 :(得分:1)

我认为您将segue与视图控制器连接,而不是使用导航控制器。 要解决此问题,请使用以下代码替换代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"AddDate"])
    {
         DatePickerViewController *datePickerViewController = (DatePickerViewController*)segue.destinationViewController;
         datePickerViewController.delegate = self;

    }
}