代码之家  ›  专栏  ›  技术社区  ›  wm.p1us

为什么我的警报不在视图层次结构中

  •  1
  • wm.p1us  · 技术社区  · 6 年前

    在这段代码中,我发现我的控制器超出了视图层次结构,我在viewDidLoad中称之为:

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

    如果我把else子句写进去。异步或。在主队列中,我的问题消失了。 为什么会发生这种事?

    非常感谢。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Anbu.Karthik    6 年前

    根据您的问题,在加载UIviewcontroller层次结构之前,您试图加载UIAlertController,在这里,您可以通过两种方式来实现,

    • 可以在主线程中强制加载UIAlertController,因此在这里需要使用。异步或。之后,但是 不建议这样做 .
    • 另一个建议是,但它可以正常工作,您需要等待初始的UI视图层次结构,我的意思是您需要将代码从viewDidLoad转换为viewDidAppear。参考: Difference between viewDidLoad and viewDidAppear