我正在构建这个应用程序需要帮助。如果您需要查看完整代码,我可以发布它,但这是方案:
我有3 UIViewControllers
,SMPViewController
,SMPLetterViewController
和SMPDetailsViewController
。
在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
。
对我来说,SMPDetailsViewController
和SMPViewController
语法中的prepareForSegue是正确的,为什么它不起作用,为什么单独输出lblTextLetter?
关于什么是错的任何想法?因为我错过了什么,我只需要另一双眼睛吗?
感谢您的帮助, socamorti
答案 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。