为什么 shouldPerformSegue 使用字符串,我该如何使用 UIStoryboardSegue 来代替它?

Why does shouldPerformSegue use a string, and how do I use a UIStoryboardSegue with it instead?

例如,使用 prepare(for segue:.. 我可以简单地传递 segue 值:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let nav = segue.destination as? UINavigationController, let manageCaptureVC = nav.topViewController as? ManageCaptureVC {

    }
}

但是现在我想在它被触发时有选择地取消它,而且似乎我只能用 shouldPerformSegue 来做到这一点,因为在准备中使用 return(对于 segue:.. 不会停止任何东西。

shouldPerformSegue 使用字符串而不是 UIStoryboardSegue。我不确定这是为什么,我想要 UIStoryboardSegue 值。

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
    if debug_tutorialAllowCaptureBtnActions == false {
        return false
    }
    //how do I get segue?
    if let nav = segue.destination as? UINavigationController, let manageCaptureVC = nav.topViewController as? ManageCaptureVC {

    }

    return true
}

你需要

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
   if identifier == "segueName" {   
      return
    }
 }

获取segue本身是没有意义的。您只需要知道 segue 标识符。此外,如果您需要做出此决定,请替换

if debug_tutorialAllowCaptureBtnActions == false {
    return false
}

return tutorialAllowCaptureBtnActions