Почему мое предупреждение не в иерархии представлений - PullRequest
0 голосов
/ 15 февраля 2019

Я обнаружил, что мой контроллер находится вне иерархии представления в этом коде, и я вызываю это в viewDidLoad:

if CLLocationManager.locationServicesEnabled() {
    // code
} else {
    let alertController = UIAlertController(...)
    //
    present(alertController)
}

Если я обертываю предложение else в .async или .asyncAfter в основной очереди, у меня естьвопрос уйти.Почему это происходит здесь?

Спасибо!

1 Ответ

0 голосов
/ 15 февраля 2019

на основе вашего вопроса вы пытаетесь загрузить UIAlertController перед загрузкой иерархии UIviewcontroller, здесь вы можете сделать это двумя способами:

  • вы можете принудительно загрузить UIAlertController в основной поток, поэтому вздесь вам нужно использовать .async или .asyncAfter, но не предлагается .
  • альтернативное предложение, но оно будет работать нормально, вам нужно дождаться исходной иерархии представления пользовательского интерфейса, я имею в виду васнеобходимо преобразовать ваш код из viewDidLoad в viewDidAppear.для ссылки: Разница между viewDidLoad и viewDidAppear
...