если условие истинно, прежде чем выполнить segue - PullRequest
0 голосов
/ 22 октября 2018

Я использую segue для перехода от ViewController B к ViewController A, и в то же время я использую segue для передачи данных с ViewController B на ViewController A.Я уже создал свои коды, в которых пользователь нажимает backbutton и выполняет alert controller, используя SCLAlertView cocoapods.Он запрашивает this alert, прежде чем перейти к следующему ViewController, но когда я его запускаю, segue выполняет автоматически без проверки условия в первую очередь и не выполняет alert controller.Мои коды приведены ниже для справки. Надеюсь, вы могли бы помочь мне в этом, потому что я новичок в быстрой и я провел исследование, но, кажется, я не вижу решения, которое применимо в моей проблеме.Спасибо.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showVCA" {
        if let vc_A = segue.destination as? ViewControllerA {
            vc_A.validPincode = validPincode
            vc_A.participants = participants
            vc_A.event = event
        }
    }
}



 @IBAction func backbutton(_ sender: UIButton) {
    let alert = SCLAlertView(appearance: confirmationAppearance)
    _ = alert.addButton("Leave", action: {
        self.dismiss(animated: true, completion: nil)
        self.performSegue(withIdentifier: "showVCA", sender: sender)

    })
    _ = alert.addButton("Stay", action: { })
    _ = alert.showError("Confirmation", subTitle: "Are you sure you want to leave this page?")

}

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Ваша функция backbutton() не отображается для представления контроллера предупреждений (путем вызова одной из showXXX() функций SCLAlertView), поэтому ничего не будет отображаться.И возможно ли, что ваша кнопка подключена к выходу контроллера представления вместо действия?

enter image description here

0 голосов
/ 22 октября 2018

Проверка должна быть выполнена до performSegue, если вы performSegue означает, что вы уже выполнили код для перехода к следующему ViewController.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showVCA" {
        if let vc_A = segue.destination as? ViewControllerA {
            vc_A.validPincode = validPincode
            vc_A.participants = participants
            vc_A.event = event
        }
    }
}



@IBAction func backbutton(_ sender: UIButton) {
    let alert = SCLAlertView(appearance: confirmationAppearance)
    _ = alert.addButton("Leave", action: {
        self.dismiss(animated: true, completion: nil)
        if validation() {
            self.performSegue(withIdentifier: "showVCA", sender: sender)
        }

    })
    _ = alert.addButton("Stay", action: { })
    _ = alert.showError("Confirmation", subTitle: "Are you sure you want to leave this page?")

}

func validation() -> Bool {
     // add validation logic here
     return false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...