我正在尝试制作一个供所有视图控制器使用的警报功能:
[1,2,3,4]
但是,它适用于(视图控制器).swift,但不适用于AppDelegate.swift中的didFinishLaunchingWithOptions函数。我错过了什么?感谢。
答案 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
。