Что использовать между executesegue и shouldperformsegue для выполнения segue, если только условие TRUE - PullRequest
0 голосов
/ 23 октября 2018

Мне трудно решить собственную проблему, связанную с segue.Сценарий должен состоять в том, что когда пользователь нажал backbutton, он выдаст предупреждение, которое спросит пользователя Вы уверены, что покинете эту страницу? Leave или Stay - вариант.Если пользователь нажал Leave ответ, он вернется к DashBoard, а если пользователь нажал Stay, он просто сохранит свой исходный ViewController.Проблема в том, что segue автоматически выполняется без проверки условия внутри backbutton.Я новичок в области быстроты, и все проблемы, с которыми я столкнулся и с которыми сталкиваюсь, являются очень новыми для меня.Как я буду правильно строить свои коды, чтобы соответствовать требованиям backbutton.Как кнопка выполнит сначала условие, прежде чем она выполнит переход?Надеюсь, ты сможешь мне помочь.Ниже приведены мои коды для справки.Был здесь почти 1 неделю.Спасибо.

executeSegue

  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDashBoard" {
        if let dashBoardVC = segue.destination as? DashBoardViewController {
            dashBoardVC.validPincode = validPincode
            dashBoardVC.participants = participants
            dashBoardVC.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: "showDashBoard", sender: sender)
    })
    _ = alert.addButton("Stay", action: { })
    _ = alert.showError("Confirmation", subTitle: "Are you sure you want to leave this page?")

    }

при попытке использовать shouldPerformSegue, но яне знаю, как начать

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

        var segueShouldOccur: Bool!

        if segueShouldOccur == false {
            print("nope, user wants to stay")
            return false
        }
        else {
            self.performSegue(withIdentifier: "showDashBoard", sender: sender)
            print("Yep, the user wants to leave")
        }
    }


    return true
}

снимок экрана для раскадровки segue back button

1 Ответ

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

Для пользы того, кто похож на меня, новичка в использовании swift.Я решил свою проблему.Я опустил переход, связанный между back button и DashBoard.Я перевожу передачу с ParticipantsViewController на DashBoardViewController. :) segue

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

    _ = alert.addButton("Stay", action: { })
    _ = alert.showError("Confirmation", subTitle: "Are you sure you want to leave this page?")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...