有条件的Segue使用Storyboard

我只需要知道如何做一些“有条件的”redirect/继续一些看法。 例如 :

如果用户还没有login,则会出现一个带login表单的视图。 但是,如果用户已经login,他们将看到他们的个人资料视图。

如何使用故事板来制作有条件的继续?

谢谢

对于有条件的赛段,不要像往常一样从一个button开始一个赛段。 而不是使用以下步骤:

  1. 在故事板中,直接从源视图控制器启动一个segue到目标视图控制器。 为此,您可以将源视图控制器的图标拖到视图正下方的栏上,直到主canvas区域上的目标视图控制器。 只要记住你必须直接连接两个视图控制器,而不是任何控制。

  2. 为此segueinput一个合适的segue标识符。 比如说“conditionSegue”

  3. 现在,在您的源视图控制器的.m文件中执行您的条件,并调用-performSegueWithIdentifier:sender:方法上的“自我”是这样的:

     -(void)loadDestinationVC{ if(condition == YES){ [self performSegueWithIdentifier:@"conditionSegue" sender:nil]; } } 

我希望我说清楚。

我相信一个更好的方法,如果你想使用从buttonsegues将使用这个:

首先创build一个button,并使用segue将其连接到另一个视图,给这个segue一个名字

然后在你的.m文件中使用这个方法

  - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { if ([identifier isEqualToString:@"SegueName"]) { //Check if should make the segue //if not do something [self doSomething]; //and return NO; return NO; } return YES; } 

在斯威夫特你可以这样做:正如@Gaurav Singh在他的回答中所build议的那样

第1步:从ViewControllerA向ViewControllerB插入一个segue。 segue应该从ViewControllerA本身开始,而不是从任何控件(如Button)中开始。

步骤2:在故事板中给出一个唯一的标识符。 例如:seageFromAtoB

第3步:在你的ViewControllerforA.swift中写入:

 if(condition == true) { self.performSegueWithIdentifier("seageFromAtoB", sender: self) } 

如果你正在执行一些其他Thread任务,然后使用performSegueWithIdentifier可以抛出一个exception。

如果你得到这个错误,那么你应该使用:

 if(condition==true){ NSOperationQueue.mainQueue().addOperationWithBlock { self.performSegueWithIdentifier("seageFromAtoB", sender: self) } } 

这将在主Thread执行segueredirect。

希望这个帮助寻找Swift选项的人

你直接从一个控制器到另一个(或其他),并给他们的标识符。 在代码中,您可以根据您的条件调用segse,然后调用performSegueWithIdentifier:sender :.

通过ctrl拖动从底部的视图控制器图标到目的地创build“通用”segue。 这segue将不会与任何行动相关联。 然后,在您的代码中,事件正在使用您想要触发该继续的条件代码,请调用:

 - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender