UIAlertController завершен и представлен, но не отображается во время viewDidLoad - PullRequest
0 голосов
/ 23 октября 2018

У меня есть эта настройка контроллера предупреждений, которая появляется, как только загружается контроллер вида.Тем не менее, он не появляется.Я считаю, что у меня есть все аспекты - заголовок, сообщение, стиль оповещения, кнопка действия и подарок ... но все равно не появляется.Не уверен, что я скучаю.

  let array = quoteBank()

    print(array.sarcasticQuotes[0].quote)


    let title = "Message"
    let message = array.sarcasticQuotes[0].quote

    let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)

    alert.addAction(.init(title: "OK", style: .default, handler: nil))
   present(alert, animated: true, completion: nil)

Ответы [ 2 ]

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

Попытка показать предупреждение в viewDidLoad слишком рано.Контроллер представления еще не отображается.Используйте viewDidAppear.

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    // Use this if statement to only show the alert once
    if self.isBeingPresented || self.isMovingToParentViewController {
        // show your alert here
    }
}
0 голосов
/ 23 октября 2018

Вам необходимо выполнить это в главном потоке:

DispatchQueue.main.async {
    present(alert, animated: true, completion: nil)
}

Причиной этого является то, что иерархия контроллера представления будет установлена ​​после завершения viewDidLoad.Таким образом, делая это, вы планируете представление оповещения в главном потоке на время, когда основной поток завершил выполнение viewDidLoad.

...