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

最佳答案

我找到了答案,这要感谢Paulw11this question的评论。

因此,我从“删除”栏按钮删除了unsegue segue,并将其从View Controller添加到Exit。然后我通过删除动作方法以编程方式调用此segue。这工作了。

但是我注意到没有调用shouldPerformSeguethis linknburk处解释的原因是,如果以编程方式调用segue,则不会调用shouldPerformSegue。苹果工程师真的很聪明:)

09-12 09:46