prepareForSegue在调用时不发送参数,导致崩溃

时间:2014-02-26 05:30:06

标签: ios iphone objective-c xcode uistoryboardsegue

我的初始视图控制器中有两个segues。 push segue连接到单元格,模态连接到+ UIBarButtonItem。

enter image description here

当这是我的prepareForSegue代码的样子时,一切都很好,filePath通过push segue发送,但filePath不会通过模态segue传递。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showTimes"]) {
        [[segue destinationViewController] setFilePath:filePath];
    }

//    if ([[segue identifier] isEqualToString:@"addEvent"]) {
//        [[segue destinationViewController] setFilePath:filePath];
//    } 
}

如果我取消注释第二个if语句和segue标识符,则应用程序崩溃。 filePath无处发送。我尝试将[[segue destinationViewController] setFilePath:filePath];移出两个if语句,试图确保该行已执行,但这也会导致我的应用程序崩溃。

两个segue都在Attributes中设置了正确的标识符。但是,我不确定Xcode是否真的意识到设置了正确的标识符,因为当我更改segue类型时,这些更改不会在下次运行应用程序时反映出来。

我不知道该做什么。我对Objective-C比较陌生。

1 个答案:

答案 0 :(得分:4)

addEvent segue指向导航控制器,而不是您的视图控制器。相反,获取视图控制器并在其上设置文件路径:

[[[segue destinationViewController] topViewController] setFilePath:filePath];