即使不满足标识符,Segue 也会执行

Posted

技术标签:

【中文标题】即使不满足标识符,Segue 也会执行【英文标题】:Segue performs even though identifier is not met 【发布时间】:2014-07-20 09:51:49 【问题描述】:

我已经使用样式推送创建了一个从 uibutton 到 viewController 的 segue。我只希望在满足条件时推动这个 segue。因此我创建了一个这样的标识符:

[self performSegueWithIdentifier:@"LoginSuccessful1" sender:self];

但是,即使没有调用 performSegueWithIdentifier,segue 似乎也正在被推送。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

不要让 segue 直接从按钮转到,而是将 UIButton 连接到视图控制器上的 IBAction。然后,在此 IBAction 中,检查您的状况并调用您的 performSegue。当直接从按钮挂钩 segue 时,不会首先咨询 ViewController。

【讨论】:

那么连接在哪里呢?我需要给某物一个标识符。 就像@codester 在他的回答中所说,它需要添加在两个 ViewController 之间。 您也可以实现shouldPerformSegueWithIdentifier 方法来潜在地否决segue,但我的偏好是根据标准更改按钮的启用状态 - 这会提供按钮处于非活动状态而不是离开的视觉反馈用户想知道为什么什么都没发生【参考方案2】:

从按钮中删除segue 并将其从ViewController 连接到AnotherViewController,因为pushsegue 而不是UIButton

并检查条件并执行segue

if(this == that)

    [self performSegueWithIdentifier:@"LoginSuccessful1" sender:self];

【讨论】:

以上是关于即使不满足标识符,Segue 也会执行的主要内容,如果未能解决你的问题,请参考以下文章

为啥程序在登录时不执行segue?

使用标识符执行 segue 在 swift 2 中不起作用

使用 ViewDidAppear 中的标识符执行 Segue 不起作用

如何从 SKScene 中执行 segue?

为啥即使存在列,我也会有 ORA-00904?

如果 segue.identifier == "showChildFiles" 当 segue 标识符看起来正确时,Swift 3 准备 segue 不通过