Обработчик UIAlertAction вызван не в то время? - PullRequest
0 голосов
/ 01 июля 2018

У меня есть функция, которая выглядит так:

@IBAction func showAlert(){

//Some irrelevant code

let alert = UIAlertController(title: "Some Title", message: "Some Message", preferredStyle: .alert)

let action = UIAlertAction(title: "Close this alert", style: .default, handler: {
    action in
        self.startNewRound()
    })


alert.addAction(action)

present(alert, animated: true, completion: nil)

}

Вот updateLabels():

updateLabels() { 
targetLabel.text = String(targetValue)
scoreLabel.text = String(score)
roundLabel.text = String(round)

Вот некоторые глобальные переменные:

var currentValue: Int = 0
@IBOutlet weak var targetLabel: UILabel!
var targetValue: Int = 0
@IBOutlet weak var scoreLabel: UILabel!
@IBOutlet weak var roundLabel: UILabel!
var round: Int = 0

Вот startNewRound ():

func startNewRound() {
targetValue = Int(arc4random_uniform(100)) + 1
currentValue = 50
slider.value = Float(currentValue)
round += 1
updateLabels()
} 

Идея состоит в том, что эта функция вызывается всякий раз, когда нажимается определенная кнопка в моем контроллере основного вида, а затем появляется предупреждение. Как только пользователь закрывает предупреждение, вызывается startNewRound().

Однако, с этим текущим кодом, startNewRound() вызывается только после того, как пользователь снова нажимает кнопку контроллера вида, после того как пользователь уже закрыл предупреждение. Как заставить startNewRound() запускаться сразу после закрытия оповещения?

1 Ответ

0 голосов
/ 01 июля 2018

Попробуйте это.

@IBAction func showAlert(){

    //Some irrelevant code

    let alertController = UIAlertController(title: "Some Title", message: "Some Message", preferredStyle: .alert)

    let closeAction = UIAlertAction(title: "Close this alert", style: UIAlertActionStyle.default) {
        UIAlertAction in
            self.startNewRound()
    }

    alertController.addAction(closeAction)

    self.present(alertController, animated: true, completion: nil)
}
...