在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。