gpt4 book ai didi

ios - 在 ViewController 之外显示 UIAlertController

转载 作者:IT王子 更新时间:2023-10-29 05:20:40 25 4
gpt4 key购买 nike

我无法显示我的 UIAlertController,因为我试图在一个不是 ViewController 的类中显示它。

我已经尝试添加它了:

 var alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .Alert)

UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(alertController, animated: true, completion: nil)

哪个不工作...我还没有找到适合我的解决方案。

最佳答案

我在 UIAlertController 上写了这个 extension 来带回 show()
它使用递归来查找当前的顶 View Controller :

extension UIAlertController {

func show() {
present(animated: true, completion: nil)
}

func present(animated: Bool, completion: (() -> Void)?) {
if let rootVC = UIApplication.shared.keyWindow?.rootViewController {
presentFromController(controller: rootVC, animated: animated, completion: completion)
}
}

private func presentFromController(controller: UIViewController, animated: Bool, completion: (() -> Void)?) {
if
let navVC = controller as? UINavigationController,
let visibleVC = navVC.visibleViewController
{
presentFromController(controller: visibleVC, animated: animated, completion: completion)
} else if
let tabVC = controller as? UITabBarController,
let selectedVC = tabVC.selectedViewController
{
presentFromController(controller: selectedVC, animated: animated, completion: completion)
} else if let presented = controller.presentedViewController {
presentFromController(controller: presented, animated: animated, completion: completion)
} else {
controller.present(self, animated: animated, completion: completion);
}
}
}

现在很简单:

var alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .Alert)
alertController.show()

关于ios - 在 ViewController 之外显示 UIAlertController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30052299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com