我想要一个包含所有类方法的类.我想使用委托,所以我的视图控制器(符合协议)可以调用AlertFactory.passwordResetSucess()和显示警报.
有没有办法让这个工作?一种使用这个类的委托的方法?
这是不好的做法吗?形式不好?为什么?
实现这一目标的好方法是什么?在几个视图中将使用其他类方法.
谢谢!
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)
您可以设置delegate为static,并使用它访问它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)
| 归档时间: |
|
| 查看次数: |
3770 次 |
| 最近记录: |