为什么我的警报不在视图层次结构中
Why my alert is not in the view hierarchy
我发现我的控制器不在这段代码的视图层次结构中,我在 viewDidLoad 中调用它:
if CLLocationManager.locationServicesEnabled() {
// code
} else {
let alertController = UIAlertController(...)
//
present(alertController)
}
如果我在主队列的 .async 或 .asyncAfter 中包装 else 子句,我的问题就会消失。
为什么会发生在这里?
谢谢!
根据您的问题,您尝试在加载 UIviewcontroller 层次结构之前加载 UIAlertController,在这里您可以通过两种方式进行,
- 可以在主线程强制加载UIAlertController,所以这里需要使用.async或者.asyncAfter,但是不建议。
- 替代建议,但它会正常工作,您需要等待初始 UI 视图层次结构,我的意思是您需要将代码从 viewDidLoad 转换为 viewDidAppear。供参考:Difference between viewDidLoad and viewDidAppear
我发现我的控制器不在这段代码的视图层次结构中,我在 viewDidLoad 中调用它:
if CLLocationManager.locationServicesEnabled() {
// code
} else {
let alertController = UIAlertController(...)
//
present(alertController)
}
如果我在主队列的 .async 或 .asyncAfter 中包装 else 子句,我的问题就会消失。 为什么会发生在这里?
谢谢!
根据您的问题,您尝试在加载 UIviewcontroller 层次结构之前加载 UIAlertController,在这里您可以通过两种方式进行,
- 可以在主线程强制加载UIAlertController,所以这里需要使用.async或者.asyncAfter,但是不建议。
- 替代建议,但它会正常工作,您需要等待初始 UI 视图层次结构,我的意思是您需要将代码从 viewDidLoad 转换为 viewDidAppear。供参考:Difference between viewDidLoad and viewDidAppear