如何制作 Segue Pass 数据并且仅在满足某些条件时执行

Posted

技术标签:

【中文标题】如何制作 Segue Pass 数据并且仅在满足某些条件时执行【英文标题】:How to make Segue Pass Data AND ONLY execute if certain criteria is met 【发布时间】:2013-12-18 02:11:35 【问题描述】:

我有一个带有按钮的登录页面。当我点击它时,如果并且仅当登录成功时,我想将数据传递给另一个类(使用属性)。

我尝试在 Button 上使用 Segue 来传递数据,但问题是这个 Segue 总是转到下一个视图,即使登录不成功,在这种情况下也不应该。

 -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender             
if ([[segue identifier] isEqualToString:@"gotoMainPage"] ) 
MainPageController *mpc = [segue destinationViewController];     
mpc.username = @"TEST";    

如果登录成功,我怎样才能让 Segue 只转到目标控制器?

我知道还有其他方法可以转到另一个 ViewController,例如在按钮上设置 IBAction,当登录成功时,使用 instantiateViewControllerWithIdentifier 和 presentViewController,我也尝试过,但这里的问题是也就是说,它不会将数据传递给另一个类。

感谢您的帮助。谢谢

【问题讨论】:

【参考方案1】:

您从控制器(不是按钮)连接 segue,然后在满足您的条件后,在代码中调用 performSegueWithIdentifier。

【讨论】:

【参考方案2】:

一旦调用了prepareForSegue:sender:,就无法阻止segue 的发生。

您应该检查条件并有条件地调用performSegueWithIdentifier 方法。

【讨论】:

好的,所以我不能真正使用 Segue 方法登录。

以上是关于如何制作 Segue Pass 数据并且仅在满足某些条件时执行的主要内容,如果未能解决你的问题,请参考以下文章

仅在不切换 viewControllers 的情况下 Segue 动画

如何在没有 segue 的情况下在 Swift 3 中将数据从 VC 传递到另一个?

迅速!仅在按下按钮时创建一个segue!标签栏控制器

在 Swift 中以编程方式制作 Segue

如何仅在接收数据时制作已发布的属性调用映射

在 Push for Segue [IOS] 中获取 NSDictionary 选定行