UIAlertController子类问题swift

时间:2015-11-24 22:18:13

标签: ios swift uialertcontroller

我想创建一个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)

我收到错误,为什么我错在哪里?

2 个答案:

答案 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添加方法,可以使用扩展名