我正在一个项目中,我打电话几个赛段而不是使用导航控制器。 在我的项目早些时候,我设置了一个模态segue,并从几个不同按钮的IBAction方法中调用它(我将同一个segue从不同的按钮中调用,因为我将一个字符串与segue一起传递)。在XCode 4中调用segue的正确方法是什么?
在我的故事板,它看起来是这样的:
然后在我的代码,我这样做:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSLog(@"Vimeo Segue");
if([segue.identifier isEqualToString:@"playVimeo"]) {
WebViewViewController *controller = (WebViewViewController *)segue.destinationViewController;
controller.vimeoURL = vimeoURL;
}
}
- (IBAction)launchCreativeFuture:(id)sender {
vimeoURL = @"72053500";
[self performSegueWithIdentifier:@"playVimeo" sender:sender];
}
这工作,我很高兴有了这个。然而...
我偶然发现了另一种做法,我很困惑,为什么他们都工作,并建议哪一个。
在这里,我添加了一个链接IBAction为和模态SEGUE,按照这些图片:
我的代码如下所示:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"pushToGraduateCourses"]) {
NSLog(@"Grad Segue");
UIViewController *controller = (UIViewController *)segue.destinationViewController;
}
}
- (IBAction)launchGraduate:(id)sender {
NSLog(@"Grad Button");
[self performSegueWithIdentifier:@"pushToGraduateCourses" sender:sender];
}
完全相同的代码方式,据我所知...除了当我这样做,我得到一个警告:“警告:尝试呈现时,而演示正在进行中!“ ...当我看着我的控制台时,“Grad Segue”记录了两次......这是有道理的,但在我的第一个示例中,“Vimeo Segue”只记录了一次。
我想我是问了几个问题:
一)任何人都可以发现这两种方法之间的区别?因为我不能。
b)从Interface Builder自动调用performSegueWithIdentifier而不必以编程方式从链接到该按钮的IBAction调用它,那么创建一个segue?
c)建议采用哪种方式?
由于提前,
〜杰西
干杯,谢谢凯文,这有助于... –
那么,@ jesses.co.tt。如果这有帮助,它是否回答你的问题?如果是的话,给它一个很好的,大的,胖的,绿色的复选标记。 :) – CaptJak
是的,我刚刚做到了。我很犹豫,它只回答2/3的问题,但我想我不应该在一个问中提出三个问题! –