Ios 如何在适用于各种视图控制器的swift文件模型中创建警报
我是iOS开发的初学者。我正在尝试制作一个Swift文件,其中只包含一个显示警报的方法。此模型将在某些视图控制器中使用 我制作了一个Swift文件,发出警报的代码如下:Ios 如何在适用于各种视图控制器的swift文件模型中创建警报,ios,swift,Ios,Swift,我是iOS开发的初学者。我正在尝试制作一个Swift文件,其中只包含一个显示警报的方法。此模型将在某些视图控制器中使用 我制作了一个Swift文件,发出警报的代码如下: import UIKit class Alert : UIAlertController { func showAlert (alertTitle: String, alertMessage: String, actionTitle: String) { let alert = UIAlertContr
import UIKit
class Alert : UIAlertController {
func showAlert (alertTitle: String, alertMessage: String, actionTitle: String) {
let alert = UIAlertController(title: alertTitle, message: alertMessage, preferredStyle: .alert)
let alertAction1 = UIAlertAction(title: actionTitle, style: .default) { (action) in
}
alert.addAction(alertAction1)
present(alert, animated: true, completion: nil)
}
}
然后我在视图控制器中实现这个类
import UIKit
class ViewController: UIViewController {
var x = 10
var alert = Alert()
override func viewDidLoad() {
super.viewDidLoad()
if x < 15 {
test()
}
}
func test() {
alert.showAlert(alertTitle: "Opps", alertMessage: "less than 15", actionTitle: "OK")
}
}
导入UIKit
类ViewController:UIViewController{
变量x=10
var alert=alert()
重写func viewDidLoad(){
super.viewDidLoad()
如果x<15{
测试()
}
}
func测试(){
alert.showAlert(alertTitle:“Opps”,alertMessage:“小于15”,actionTitle:“OK”)
}
}
但我有一个错误:
警告:尝试显示其视图不在窗口层次结构中的对象
我该怎么办?该错误说明了一切:您正在创建警报实例,即UIAlertController,它正在创建另一个UIAlertController,您希望在该警报实例上显示该实例,而该实例甚至不由视图控制器显示 为什么不简单地用这个方法为UIViewController创建一个扩展呢 请尝试以下操作:
extension UIViewController {
func showAlert(title: String, message: String, …) {
…
present(alert, animated: true, completion: nil)
}
}
您可以从任何UIViewController调用此方法,它将创建从UIViewController显示的UIAlertController:
// from your UIViewController code, for example from viewDidAppear method
self.showAlert(title: "Wow!", message: "It works!", actionTitle: "Dismiss")
该错误说明了一切:您正在创建Alert实例,即UIAlertController,它正在创建另一个UIAlertController,您希望在该Alert实例上显示该实例,而视图控制器甚至没有显示该实例 为什么不简单地用这个方法为UIViewController创建一个扩展呢 请尝试以下操作:
extension UIViewController {
func showAlert(title: String, message: String, …) {
…
present(alert, animated: true, completion: nil)
}
}
您可以从任何UIViewController调用此方法,它将创建从UIViewController显示的UIAlertController:
// from your UIViewController code, for example from viewDidAppear method
self.showAlert(title: "Wow!", message: "It works!", actionTitle: "Dismiss")
您的
Alert
类没有理由扩展UIViewController
,因为您的Alert
类不是视图控制器
您应该做的是通过扩展将您的showAlert
方法设置为UIViewController
的方法
更改:
class Alert : UIAlertController {
致:
然后,当您想要显示来自视图控制器(例如ViewController
类)的警报时,只需调用showart
class ViewController: UIViewController {
func test() {
showAlert(alertTitle: "Opps", alertMessage: "less than 15", actionTitle: "OK")
}
}
您的
Alert
类没有理由扩展UIViewController
,因为您的Alert
类不是视图控制器
您应该做的是通过扩展将您的showAlert
方法设置为UIViewController
的方法
更改:
class Alert : UIAlertController {
致:
然后,当您想要显示来自视图控制器(例如ViewController
类)的警报时,只需调用showart
class ViewController: UIViewController {
func test() {
showAlert(alertTitle: "Opps", alertMessage: "less than 15", actionTitle: "OK")
}
}