"Instance member 'makeAlert' cannot be used on type 'alert' " 我无法修复此错误


我创建了一个新的swift文件和类。我想使用我的所有视图控制器的警报功能。但我有个错误。这是我的类和函数。
class alert {
func makeAlert(titleInput:String, messageInput:String){
let alert = UIAlertController(title: titleInput, message: messageInput, preferredStyle: UIAlertController.Style.alert)
let okButton = UIAlertAction(title: "Ok", style: UIAlertAction.Style.default, handler: nil)
alert.addAction(okButton)
}

}

我想这样使用我的函数。

alert.makeAlert(titleInput: "Error", messageInput: " name or Location can't be empty")

这里是我的错误信息:

实例成员"makeAlert"不能用于类型"alert";你的意思是用这种类型的值来代替吗?

alert是一个类型,makeAlert是一个实例成员。正如错误所说的

实例成员"makeAlert">不能用于类型的"alert">

为了显示选项,让我首先重命名代码的一些术语,以避免混淆

class Alert {
func makeAlert(titleInput: String, messageInput: String) {
let alertController = UIAlertController(title: titleInput, message: messageInput, preferredStyle: UIAlertController.Style.alert)
let okButton = UIAlertAction(title: "Ok", style: .default, handler: nil)
alertController.addAction(okButton)
}
}

创建Alert的实例

let alert = Alert()
alert.makeAlert(titleInput: "Foo", messageInput: "Bar")

或者使makeAlert成为static功能

static func makeAlert(titleInput:String, messageInput:String) { ...

然后您可以在类型上使用"makeAlert">

Alert.makeAlert(titleInput: "Foo", messageInput: "Bar")

欲了解更多信息,请阅读语言指南中的方法


但是一个额外的Alert类不是很有用,而且函数没有返回值。更好的解决方案是扩展UIViewController,因为您可以在当前视图控制器中显示警报控制器

extension UIViewController {
func presentAlert(title: String, message: String, completion: (() -> Void)? = nil) {
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
let okButton = UIAlertAction(title: "Ok", style: .default, handler: nil)
alertController.addAction(okButton)
self.present(alertController, animated: true, completion: completion)
}
}


相关内容

最新更新