Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 什么';在XCode 4中调用segue的正确方法是什么?_Iphone_Ios_Uistoryboardsegue_Ibaction - Fatal编程技术网

Iphone 什么';在XCode 4中调用segue的正确方法是什么?

Iphone 什么';在XCode 4中调用segue的正确方法是什么?,iphone,ios,uistoryboardsegue,ibaction,Iphone,Ios,Uistoryboardsegue,Ibaction,我正在进行一个项目,在这个项目中,我将调用多个Segue,而不是使用导航控制器。 在我的项目早期,我设置了一个模式segue,并从几个不同按钮的iAction方法中调用它(我在传递字符串时从不同按钮调用同一个segue) 在我的故事板中,它如下所示: 然后在我的代码中,我执行以下操作: -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NSLog(@"Vimeo Segue"); if(

我正在进行一个项目,在这个项目中,我将调用多个Segue,而不是使用导航控制器。 在我的项目早期,我设置了一个模式segue,并从几个不同按钮的iAction方法中调用它(我在传递字符串时从不同按钮调用同一个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];
}
这很有效,我很高兴。然而

我偶然发现了另一种方法,我很困惑为什么它们都有效,推荐哪一种

在这里,我添加了一个链接iAction和一个模态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”只记录一次

我想我要问的是几个问题:

a) 有人能看出这两种方法的区别吗?因为我不能

b) 从Interface Builder创建segue是否会自动从按钮调用PerformsgueWithIdentifier,而不必从链接到该按钮的iAction编程调用它

c) 推荐哪种方式

提前感谢,

~Jesse

A.是的

B.是的,当您从按钮创建一个序列时,该按钮调用performsguewithidentifier


在我看来,你应该在情节提要中尽可能多地进行UI设计,只有在你需要根据代码中的某些内容更新UI时才可以使用代码。例如,如果用户是您应用程序中的管理员,您将希望切换到与标准用户不同的设置页面。

Well,@jesse.co.tt。如果这有帮助,它是否回答了你的问题?如果有,给它一个漂亮、大、胖、绿色的复选标记。:)是的,我就是这么做的。我犹豫了b/c它只回答了三分之二的问题,但我想我不应该一次问三个问题!更新答案以回答第一个问题:)