如何处理两个segues到同一个视图控制器?

Spo*_*ude 7 xcode storyboard segue

我有一个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");
    }
}
Run Code Online (Sandbox Code Playgroud)

Cal*_*leb 3

您不会调用-prepareForSegue:sender:,您将在视图控制器中实现它。在该方法的重写中,您可以检查 segue 的identifier属性(segue 作为参数传入):

if ([segue.identifier isEqualToString:@"Segue Numero Uno"]) {
    // do something here
}
Run Code Online (Sandbox Code Playgroud)

这使您可以根据导致转换的 segue 采取某种操作。您可以在故事板编辑器中为每个segue 设置标识符。

更新:根据您在评论中提供的代码(我已将其添加到您的问题中),您现在有了正确的想法。此时,这只是一个好的老式调试问题。需要检查的一些事项:

  • 故事板中的视图控制器(即有问题的segues导致的视图控制器)是否设置为实现此的类的实例-prepareForSegue:sender:?检查故事板中控制器的类型。

  • 您在代码中使用的字符串是否与您在故事板中为 Segues 设置的标识符完全匹配?大写、拼写、标点符号和空格都重要。

  • 你的-prepareForSegue:sender:方法被调用了吗?在那里放置一个断点并进行调试。如果被调用,segue传入的标识符是什么?如果没有被调用,则故事板中的视图控制器没有正确的类。