Swift 3,Xcode 8.1。我想在UIAlertController中显示UIViewController

我有方法:

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")
    ...
}

并得到警告:



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

当我尝试在初始ViewController中显示Alert时,它可以工作,但是在使用push segue和初始VC连接的另一个ViewController中,它不起作用。

最佳答案

在viewDidLoad中,您的应用尚未向用户展示 View Controller ,因此无法显示警报。尝试在viewDidAppear中执行该代码

关于iOS。尝试在 View 不在窗口层次结构中的UIViewController上呈现UIAlertController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40665894/

10-10 20:58