我希望创建一个静态方法,我可以将其置于一个实用程序类中,该类将启动UIAlertController
。但是,我收到以下错误:
"在单元格中动画的额外参数"
static func simpleAlertBox1(msg : String) -> Void{
let alertController = UIAlertController(title: "Alert!", message: msg, preferredStyle: .actionSheet)
let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil)
alertController.addAction(defaultAction)
present(alertController, animated: true, completion: nil)// error is being generated here
}
我试过了,但它仍然给了我同样的错误:
presentViewController(alertController, animated: true, completion: nil)
但如果我要移除static
,那么它可以正常工作。
答案 0 :(得分:1)
方法present(_:animated:completion:)
是UIViewController的实例方法。您需要将该方法发送到UIViewController
的特定实例。通过使您的函数成为静态函数,它是类的函数,而不是类的实例。
(这就像向汽车工厂发送消息说“将广播电台设置为99.5 FM。这个消息只有在发送到汽车的实例,而不是汽车工厂或整个丰田普锐斯类时才有意义。汽车。)
答案 1 :(得分:0)
self是UIViewController的一个实例,如果你想以静态方式调用这个函数,只需添加一个你想要呈现它的其他param viewcontroller。 非常重要,您需要在viewDidload之后显示alertView。
这里是一个示例代码:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
ViewController.simpleAlertBox1(msg: "test", viewController: self)
}
static func simpleAlertBox1(msg : String , viewController : UIViewController) -> Void{
let alertController = UIAlertController(title: "Alert!", message: msg, preferredStyle: .actionSheet)
let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil)
alertController.addAction(defaultAction)
viewController.present(alertController, animated: true, completion: nil)// error is being generated here
}
}