在 swift4 中使用 shouldPerformSegue(withIdentifier, sender) 方法时出错
Errors while using shouldPerformSegue(withIdentifier, sender) method in swift4
我想做什么:
- 检查条件,如果条件为真,则执行 segue
普通的。如果条件为假,调用 shouldPerformSegue 方法并
return false 取消转场。
我是如何尝试做到这一点的:
func buttonTapped{
if(condition is true){
// Perform actions
// Perform segue as normal
} else{
shouldPerformSegue(withIdentifier "mySegueIdentifier", sender: self){
return false
}
}
}
我收到的错误:
- 调用中的额外参数。我删除了发件人参数以尝试获取
这行得通,它为我消除了错误,但是 segue
不该做的时候还在做。
我在苹果文档中搜索了该方法的正确使用方法,但我仍然不确定该怎么做。我们将不胜感激并高度赞赏任何帮助。
如果您想执行逻辑来决定转场是否应该 "performed",您需要 覆盖 shouldPerformSegue
。这将允许 OS (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”并使其return成为“isSegueActive”的值。
这样在执行 segue 时,您的视图控制器将调用“shouldPerformSegue”来了解是否应该执行 segue。
我想做什么:
- 检查条件,如果条件为真,则执行 segue 普通的。如果条件为假,调用 shouldPerformSegue 方法并 return false 取消转场。
我是如何尝试做到这一点的:
func buttonTapped{
if(condition is true){
// Perform actions
// Perform segue as normal
} else{
shouldPerformSegue(withIdentifier "mySegueIdentifier", sender: self){
return false
}
}
}
我收到的错误:
- 调用中的额外参数。我删除了发件人参数以尝试获取 这行得通,它为我消除了错误,但是 segue 不该做的时候还在做。
我在苹果文档中搜索了该方法的正确使用方法,但我仍然不确定该怎么做。我们将不胜感激并高度赞赏任何帮助。
如果您想执行逻辑来决定转场是否应该 "performed",您需要 覆盖 shouldPerformSegue
。这将允许 OS (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”并使其return成为“isSegueActive”的值。
这样在执行 segue 时,您的视图控制器将调用“shouldPerformSegue”来了解是否应该执行 segue。