有条件的Segue使用Storyboard
我只需要知道如何做一些“有条件的”redirect/继续一些看法。 例如 :
如果用户还没有login,则会出现一个带login表单的视图。 但是,如果用户已经login,他们将看到他们的个人资料视图。
如何使用故事板来制作有条件的继续?
谢谢
对于有条件的赛段,不要像往常一样从一个button开始一个赛段。 而不是使用以下步骤:
-
在故事板中,直接从源视图控制器启动一个segue到目标视图控制器。 为此,您可以将源视图控制器的图标拖到视图正下方的栏上,直到主canvas区域上的目标视图控制器。 只要记住你必须直接连接两个视图控制器,而不是任何控制。
-
为此segueinput一个合适的segue标识符。 比如说“conditionSegue”
-
现在,在您的源视图控制器的.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