静态方法中的UIAlertController给出错误:在单元格中动画的额外参数

时间:2017-07-06 20:38:47

标签: ios swift uialertcontroller

我希望创建一个静态方法,我可以将其置于一个实用程序类中,该类将启动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,那么它可以正常工作。

2 个答案:

答案 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

     }
 }