Почему PerformSegue использует строку и как вместо нее использовать UIStoryboardSegue? - PullRequest
0 голосов
/ 02 ноября 2018

Например, при подготовке (для 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 в prepare (для segue: .. ничего не останавливает.

shouldPerformSegue использует String вместо 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
}

1 Ответ

0 голосов
/ 02 ноября 2018

Вам нужно

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

Захватывать само по себе бессмысленно. Вам нужно знать только идентификатор segue. Кроме того, если вам нужно принять это решение, замените

if debug_tutorialAllowCaptureBtnActions == false {
    return false
}

с

return tutorialAllowCaptureBtnActions 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...