gpt4 book ai didi

ios - 在 swift 警报中使用哪个标识符代替 "present"

转载 作者:行者123 更新时间:2023-11-28 06:08:29 26 4
gpt4 key购买 nike

当我在当前警报行快速使用警报时,出现使用未解析标识符的错误。

文件名:CommonFunctions.swift

类名:类 CommonFunctions:NSObject

我正在使用这个代码

class func gotoSettingScreen()
{
let alertController = UIAlertController (title: "Title", message: "Go to Settings?", preferredStyle: .alert)

let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
return
}

if UIApplication.shared.canOpenURL(settingsUrl) {
if #available(iOS 10.0, *) {
UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
print("Settings opened: \(success)") // Prints true
})
} else {
// Fallback on earlier versions
}
}
}
alertController.addAction(settingsAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alertController.addAction(cancelAction)


present(alertController, animated: true, completion: nil)
}

行错误来了:present(alertController, animated: true, completion: nil)

错误是:enter image description here

感谢您的帮助!和欣赏!

最佳答案

present(_:animated:completion:) 是一个 instance method UIViewController 和派生类型(如 UINavigationController)。所以从一些随机类的(静态)函数调用它当然会失败。

所以你在这里遇到的是设计问题。

从应用中的任何位置调用警报的解决方法:

let alertController = UIAlertController(title: "title", message: "message", preferredStyle: .alert)
//...
var rootViewController = UIApplication.shared.keyWindow?.rootViewController
if let navigationController = rootViewController as? UINavigationController {
rootViewController = navigationController.viewControllers.first
}
if let tabBarController = rootViewController as? UITabBarController {
rootViewController = tabBarController.selectedViewController
}
rootViewController?.present(alertController, animated: true, completion: nil)

根据您的 UI 架构,您可以删除不需要的检查。

建议的代码片段取自 here .

关于ios - 在 swift 警报中使用哪个标识符代替 "present",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47467537/

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