我有一个为我处理警报的结构。它只有一个功能:
func presentAlert(_ title:String, _ message:String, _ presenter:ViewController) {
let myAlert = UIAlertController(title: title, message: message, preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
myAlert.addAction(okAction)
presenter.present(myAlert, animated:true, completion:nil)
}
我可以从viewcontroller调用这个。但是在子类AddTopicViewController上我收到一个错误:
myController.alert.presentAlert("Form errors", strErrMsg, self)
//error from compiler
Cannot convert value of type 'AddTopicViewController' to expected argument type 'ViewController'
所以,有两个问题:
由于AddTopicVC是VC的子类,我认为它会通过 对于需要VC的东西。那个显然是错的。可以 有人在我的逻辑中解释了这个缺陷吗?
有关如何实现目标的任何建议?该应用程序有很多 只要用户没有输入,就会显示验证和警报 所需的数据,但所有的viewcontrollers都是子类。我试过了 使用函数扩展viewcontroller但是子类给出了 该方法不可用的错误。
感谢您的帮助。
答案 0 :(得分:1)
最简单的方法是使用所有视图控制器继承的假定基类UIViewController
。
func presentAlert(_ title:String, _ message:String, _ presenter:UIViewController)
或者使用UIViewController
extension UIViewController {
func presentAlert(_ title:String, _ message:String) {
let myAlert = UIAlertController(title: title, message: message, preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
myAlert.addAction(okAction)
present(myAlert, animated:true, completion:nil)
}
}