在swift4中使用shouldPerformSegue(withIdentifier,sender)方法时出错

我想做什么:

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

我是怎么做的:

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

我收到的错误:

  • 呼叫中的额外参数。 我删除了sender参数以尝试让它工作,它为我摆脱了错误,但segue仍然执行它不应该。

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

如果要执行逻辑来决定是否应该“执行”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 } } 

首先,你试图提供一个闭包作为方法的第三个参数,它不带三个参数,根本不把闭包作为参数,你的代码不应该调用这个方法一点都不

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

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

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