swift4

时间:2017-11-04 12:55:41

标签: ios swift segue uistoryboardsegue swift4

我正在尝试做什么:

  • 检查条件,如果条件为真,则执行segue as 正常。如果condition为false,则调用shouldPerformSegue方法 return false取消segue。

我是如何尝试这样做的:

func buttonTapped{

if(condition is true){
   // Perform actions
   // Perform segue as normal
} else{
      shouldPerformSegue(withIdentifier "mySegueIdentifier", sender: self){
      return false
      }
}

}

我收到的错误:

  • 电话中的额外参数。我删除了sender参数以尝试获取 这工作,它摆脱了我的错误,但segue 当它不应该时仍然执行。

我在苹果文档中搜索了使用此方法的正确方法,但我仍然不确定如何操作。任何帮助将被感激地接受和高度赞赏。

2 个答案:

答案 0 :(得分:2)

如果您想执行逻辑来决定是否应该“执行”segue,您需要覆盖 shouldPerformSegue。这将允许操作系统(1)正确启动事物,(2)让您能够决定是否完成segue。

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
    if [criteria met to perform segue] {
        return true
    } else {
        return false
    }
}

答案 1 :(得分:1)

首先,你试图提供一个闭包作为方法的第三个参数,它不需要三个参数,根本不接受闭包作为参数,不应该调用这个方法根据你的代码。

其次,实现某种布尔标志'isSegueActive',根据相关按钮操作中的条件,将其设置为'false'或'true'。

第三,在视图控制器中覆盖'shouldPerformSegue'并使其返回'isSegueActive'的值。

这样当执行segue时,你的视图控制器会调用'shouldPerformSegue'来知道是否应该执行segue。