我在shouldPerformSegue中使用以下代码。我想根据用户选择删除还是取消来停止或继续进行搜索。
我注意到由于警报而停止了搜索。如果我删除警报,则segue可以正常工作。shouldPerformSegue
使用此类验证的位置不正确吗?
谢谢。
let alertController = UIAlertController(title: "Confirm Delete", message: "Are you sure?", preferredStyle: UIAlertControllerStyle.alert)
let deletelAction = UIAlertAction(title: "Delete", style: UIAlertActionStyle.destructive) { (result : UIAlertAction) -> Void in
print("Delete")
if self.selection != nil {
if self.selection!.delete() == true { //this is database call
self.success = true
} else {
self.success = false
}
}
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel) { (result : UIAlertAction) -> Void in
print("Cancelled delete")
self.success = false
}
alertController.addAction(deletelAction)
alertController.addAction(cancelAction)
self.present(alertController, animated: true, completion: nil)
return success
最佳答案
我找到了答案,这要感谢Paulw11对this question的评论。
因此,我从“删除”栏按钮删除了unsegue segue,并将其从View Controller添加到Exit。然后我通过删除动作方法以编程方式调用此segue。这工作了。
但是我注意到没有调用shouldPerformSegue
。 this link在nburk处解释的原因是,如果以编程方式调用segue,则不会调用shouldPerformSegue
。苹果工程师真的很聪明:)