iOS版.尝试在UIViewController上呈现UIAlertController,其视图不在窗口层次结构中

前端之家收集整理的这篇文章主要介绍了iOS版.尝试在UIViewController上呈现UIAlertController,其视图不在窗口层次结构中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Swift 3,Xcode 8.1.我想在UIViewController中显示UIAlertController.

我有方法

private static func rootViewController() -> UIViewController {
    // cheating,I know

    return UIApplication.shared.keyWindow!.rootViewController!
}

static func presentAlert(_ message: String) {
    let alertView = UIAlertController(title: "RxExample",message: message,preferredStyle: .alert)
    alertView.addAction(UIAlertAction(title: "OK",style: .cancel) { _ in })

    rootViewController().present(alertView,animated: true,completion: nil)
}

Full code of this class you can find here

我在viewDidLoad中调用presentAlert方法

override func viewDidLoad() {
    super.viewDidLoad()
    DefaultWireframe.presentAlert("test")
    ...
}

并得到警告:

Warning: Attempt to present UIAlertController: 0x7f904ac0d930 on UIViewController: 0x7f904ad08040 whose view is not in the window hierarchy!

如何避免警告并显示警报?

它在我尝试在初始ViewController中显示Alert时有效,但它在使用push segue与初始VC连接的另一个ViewController中不起作用.

解决方法

在viewDidLoad中,您的应用尚未向用户显示视图控制器,因此无法显示警报.尝试在viewDidAppear中执行该代码

猜你在找的iOS相关文章