在swift中显示来自共享类的警报

时间:2017-06-08 17:52:47

标签: swift xcode

我正在尝试制作一个供所有视图控制器使用的警报功能:

[1,2,3,4]

但是,它适用于(视图控制器).swift,但不适用于AppDelegate.swift中的didFinishLaunchingWithOptions函数。我错过了什么?感谢。

1 个答案:

答案 0 :(得分:0)

我无法弄清楚如何从任意类调用警报(我最初使用的是扩展程序,但是当我需要在视图控制器之外调用它时遇到问题),所以我写了一个用于创建新窗口以显示警报的功能:

extension UIWindow {
    static func makeWindow () -> UIWindow {
        let window = UIWindow(frame: UIScreen.main.bounds)
        window.rootViewController = UIViewController()
        window.windowLevel = (UIApplication.shared.windows.last?.windowLevel ?? 0) + 1
        window.makeKeyAndVisible()

        return window
    }
}

并创建了一个警告子类,其中包含所有调用它的逻辑:

class MyAlertController: UIAlertController {
    let alertWindow = UIWindow.makeWindow()

    static func doAlert (_ title: String, alertMessage: String) {
        let alert = MyAlertController(title: title, message: alertMessage, preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil))
        alert.alertWindow.rootViewController?.present(alert, animated: true, completion: nil)
    }
}

然后只要您需要使用它就可以致电MyAlertController.doAlert