Добавление перехода к другому контроллеру представления, когда из всплывающего окна выбрано определенное действие - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь связать определенный View Controller, который будет работать, когда пользователь выбирает «да» из другого всплывающего окна, автоматически генерируемого после выбора случайного числа.

Как добавить второй контроллер вида, только когда пользователь выбирает да (и сбрасывает всплывающее окно, когда пользователь выбирает нет)?

Я уже исследовал его на стеке, и кто-то предложил использовать раскадровку и сегменты, поэтому я подключил первый и второй контроллеры представления с помощью «Показать переход к оружию всплывающего контроллера просмотра», а второй виртуальный контроллер имеет идентификатор раскадровки"PopUp".

Спасибо за любую помощь!

Вот мой код:

@IBAction func rolld20(_ sender: Any) {

        let randomnumber20 = Int.random(in: 1...20)
        d20label.text = String(randomnumber20)

        //create the alert
        let d20alert = UIAlertController(title: "You rolled a D20!",
        message: "You rolled a \(String(randomnumber20))! Is this enough?", preferredStyle: UIAlertController.Style.alert)

        // add the actions (yes/no buttons)
        d20alert.addAction(UIAlertAction(title: "Yes", style: UIAlertAction.Style.default, handler: nil)) {
            //code to open up second view controller with the storyboard ID "PopUp" goes here I believe?
        }
        d20alert.addAction(UIAlertAction(title: "No", style: UIAlertAction.Style.cancel, handler: nil))

        // show the alert when the user clicks to roll d20
        self.present(d20alert, animated: true, completion: nil)

    }

1 Ответ

1 голос
/ 07 октября 2019

Вам необходимо реализовать performSegueWithIdentifier.

В вашем случае код будет выглядеть примерно так:

@IBAction func rolld20(_ sender: Any) {
    let randomnumber20 = Int.random(in: 1...20)
    let d20alert = UIAlertController(title: "You rolled a D20!",
    message: "You rolled a \(String(randomnumber20))! Is this enough?", preferredStyle: UIAlertController.Style.alert)
    d20alert.addAction(UIAlertAction(title: "Yes", style:  .default, handler: { (action) -> Void in
         self.performSegue(withIdentifier: "PopUp", sender: nil)
     }))
    d20alert.addAction(UIAlertAction(title: "No", style: UIAlertAction.Style.cancel, handler: nil))
    self.present(d20alert, animated: true, completion: nil)
}

Я удалил комментарии для удобства чтения. Имейте в виду, что строка identifier в методе относится к идентификатору SEGUE, а не к идентификатору контроллера представления назначения. Чтобы установить идентификатор segue, просто нажмите на segue:

enter image description here

И отредактируйте идентификатор в пункте «Показать инспектор атрибутов»:

enter image description here

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