我有一个iPhone应用程序,我目前正在使用Storyboard在XCode4.3中构建。我有一个"根"视图控制器,有两个(2)序列到包含UIWebView的视图控制器。我希望能够识别segue(已经为两个segue设置了唯一标识符),因此我可以将正确的内容"推送"到UIWebView,基于该内容在"根"视图控制器中激活了segue。

我想我必须使用"prepareForSegue"方法,但不知道它会去哪里。我在哪里可以找到如何处理两个segue去同一个视图控制器?(我已经google了它,发现没有任何适合我的情况)。

这是我正在使用的代码:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"helpSegue"]) {
        NSLog(@"helpSegue");
    }
    else if ([segue.identifier isEqualToString:@"reportSegue"]) {
        NSLog(@"reportSegue");
    }
}
有帮助吗?

解决方案

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

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

这可以让你采取某种行动,具体取决于哪个segue导致转换。您可以在故事板编辑器中为每个分段设置标识符。

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

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

  • 做你在代码中使用的字符串 就是! 匹配您在故事板中为您的片段设置的标识符?大写,拼写,标点符号和空格都很重要。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top