我有一个iPhone应用程序,我目前正在使用Storyboard在XCode 4.3中构建。我有一个“根”视图控制器,两个(2)seques到包含UIWebView的视图控制器。我希望能够识别segue(已经为两个segue设置了唯一标识符),因此我可以根据在“根”视图控制器中激活了segue来“推送”正确的内容到UIWebView。
我想我必须使用“prepareForSegue”方法,但不知道它会去哪里。我在哪里可以找到如何处理两个segues到同一个视图控制器? (我已经谷歌了,发现没有什么适合我的情况)。
以下是我正在使用的代码:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"helpSegue"]) {
NSLog(@"helpSegue");
}
else if ([segue.identifier isEqualToString:@"reportSegue"]) {
NSLog(@"reportSegue");
}
}
答案 0 :(得分:3)
您不会致电-prepareForSegue:sender:
,您将在视图控制器中实现它。在它的覆盖方法中,您可以检查segue的identifier
属性(segue作为参数传入):
if ([segue.identifier isEqualToString:@"Segue Numero Uno"]) {
// do something here
}
这可以让你根据哪个segue导致过渡采取某种行动。您可以在情节提要编辑器中为每个segue设置标识符。
更新:根据您在评论中提供的代码(我已添加到您的问题中),您现在就有了正确的想法。在这一点上,这只是一个良好的老式调试问题。有些事要检查:
故事板中的视图控制器(即所讨论的segues导致的视图控制器)是否设置为实现此-prepareForSegue:sender:
的类的实例?检查故事板中控制器的类型。
您在代码中使用的字符串完全是否与您在故事板中为segue设置的标识符相匹配?大写,拼写,标点符号和空格都算在内。
您的-prepareForSegue:sender:
方法是否被调用?在那里放一个断点并调试。如果正在调用它,那么传入的segue
的标识符是什么?如果没有被调用,则情节提要中的视图控制器没有正确的类。