我想创建一个UIAlertController的子类但是我疯了,因为我有构造函数的问题,这是我的子类:
class loginAlert : UIAlertController {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
我认为这个子类必须有构造函数: UIAlertController(title:String,message:String,preferredStyle:UIAlertControllerStyle),因为它是UIAlertController的子类,但是当我做的时候
loginAlert(title: "test", message: "test", preferredStyle: .Alert)
我收到错误,为什么我错在哪里?
答案 0 :(得分:17)
来自UIAlertController Class Reference:
子类注释UIAlertController类旨在使用 as-is并且不支持子类化。此视图层次结构 class是私有的,不得修改。
您可以创建一个视图控制器,其视图包含透明度,其UIModalPresentationStyle为.OverCurrentContext,UIModalTransitionStyle为.CrossDissolve,效果非常相似。
或者您可以在UIAlertController上编写一个扩展,它可以添加需要跨类共享的方法(例如,一种呈现重复警报的方法)。有关扩展程序的详细信息,请参阅here。
答案 1 :(得分:0)
在类
之外创建UIAlertController的函数public func alert () {
let alert = UIAlertController(title: "Title", message: "I don't feel creative", preferredStyle: UIAlertControllerStyle.Alert)
// As many action as you want
let action = UIAlertAction(title: "OK", style: UIAlertActionStyle.Cancel, handler: nil)
alert.addAction(action)
self.presentViewController(alert, animated: true, completion: nil)
}
但正如beyowulf所说,如果要向UIAlertController添加方法,可以使用扩展名