展开正常,直到我添加prepareForSegue

时间:2013-12-24 12:51:22

标签: ios objective-c segue

我正在构建这个应用程序需要帮助。如果您需要查看完整代码,我可以发布它,但这是方案:

我有3 UIViewControllersSMPViewControllerSMPLetterViewControllerSMPDetailsViewController

SMPViewController我有一个prepareForSegue和一个UnWind:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    SMPLetterViewController *destination = [segue destinationViewController];
    destination.lblSectionText = _lblForSectionTitles;
}
-(IBAction)returnToMain:(UIStoryboardSegue *)segue{
    //just return to Home page
}

SMPLetterViewController我有一个prepareForSegue,一个UnWind和一个标题为“Back”的按钮,它与SMPViewController的UnWind连接:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    SMPDetailsViewController *destination = [segue destinationViewController];
    destination.lblTextLetter = _lblWordSort;
}

-(IBAction)returnToLetterList:(UIStoryboardSegue *)segue{
    //just return to Letter page
}

SMPDetailsViewController中,我有一个标题为“Home”的按钮,它连接SMPViewController的UnWind,以及一个标题为“Back”的按钮,它连接{{1的UnWind }}

当我运行该程序时,除SMPLetterViewController上的“后退”按钮外,一切正常,它会不断崩溃我的应用程序。错误地告诉我SMPLetterViewController中prepareForSegue中的lblTextLetter出现了问题。当我在SMPLetterViewController中注释prepareForSegue时,一切都很有效,但我无法将信息传输到SMPLetterViewController

对我来说,SMPDetailsViewControllerSMPViewController语法中的prepareForSegue是正确的,为什么它不起作用,为什么单独输出lblTextLetter?

关于什么是错的任何想法?因为我错过了什么,我只需要另一双眼睛吗?

感谢您的帮助, socamorti

1 个答案:

答案 0 :(得分:1)

在storyboard中添加segue标识符并将prepareForSegue更改为:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([[segue identifier] isEqualToString:@"YOUR_IDENTIFIER"]) {
        SMPDetailsViewController *destination = [segue destinationViewController];
        destination.lblTextLetter = _lblWordSort;
    }
}

为你的第二次prepareForSegue做同样的事情。 出现此问题的原因是,当您运行展开操作时,也会调用prepareForSegue。