只有类方法和委托的Swift类?

May*_*tBe 3 ios swift

我想要一个包含所有类方法的类.我想使用委托,所以我的视图控制器(符合协议)可以调用AlertFactory.passwordResetSucess()和显示警报.

  1. 有没有办法让这个工作?一种使用这个类的委托的方法?

  2. 这是不好的做法吗?形式不好?为什么?

  3. 实现这一目标的好方法是什么?在几个视图中将使用其他类方法.

谢谢!

    protocol AlertFactoryDelegate 
    {
        func showAlert(alert: UIAlertController)
    }

    class AlertFactory: NSObject {

     let delegate: AlertFactoryDelegate!

     class func passwordResetSuccess() 
     {
         var alert = UIAlertController(title: "Success!", message: "Yay", preferredStyle: UIAlertControllerStyle.Alert)
         alert.addAction(UIAlertAction(title: "Continue", style: UIAlertActionStyle.Default, handler: nil))
         delegate.showAlert(alert)
     }
    }
Run Code Online (Sandbox Code Playgroud)

Dav*_*ndz 6

您可以设置delegatestatic,并使用它访问它AlertFactory.delegate

class AlertFactory: NSObject {
    static weak var delegate: AlertFactoryDelegate?

    class func passwordResetSuccess() {
        ...
        self.delegate?.showAlert(alert)
    }
}
Run Code Online (Sandbox Code Playgroud)

要创建委托:

class SomeClass: AlertFactoryDelegate {
    ... // Implement everything the protocol requires
}

// Asssing a delegate
AlertFactory.delegate = SomeClass()
Run Code Online (Sandbox Code Playgroud)