Ios Swift:如何为UIAlertController创建一个无参数的便利初始化

Ios Swift:如何为UIAlertController创建一个无参数的便利初始化,ios,swift,uialertcontroller,convenience-methods,Ios,Swift,Uialertcontroller,Convenience Methods,我试图为子类UIAlertController创建一个没有参数的便利init,但它给了我一个错误 它给了我这个错误: 在调用self.init之前委托初始值设定项时使用self class AvatarSelectionAlert: UIAlertController { convenience init(test: String) { let title = NSLocalizedString("ALERT_CHOOSE_AVATAR_TITLE", comment:

我试图为子类
UIAlertController
创建一个没有参数的
便利init
,但它给了我一个错误

它给了我这个错误:

在调用self.init之前委托初始值设定项时使用self

class AvatarSelectionAlert: UIAlertController {

    convenience init(test: String) {
        let title = NSLocalizedString("ALERT_CHOOSE_AVATAR_TITLE", comment: "")
        let message = NSLocalizedString("ALERT_CHOOSE_AVATAR_MESSAGE", comment: "")
        self.init(title: title, message: message, preferredStyle: .ActionSheet)

        let selectPremadeAvatarAction = UIAlertAction(title: NSLocalizedString("SELECT_PREMADE_AVATAR", comment: ""), style: .Default) { Void in

        }
        addAction(selectPremadeAvatarAction)

        let chooseFromGalleryAction = UIAlertAction(title: NSLocalizedString("CHOOSE_FROM_GALLERY", comment: ""), style: .Default) { Void in

        }
        addAction(chooseFromGalleryAction)

        let takeNewPictureAction = UIAlertAction(title: NSLocalizedString("TAKE_NEW_PICTURE", comment: ""), style: .Default) { Void in

        }
        addAction(takeNewPictureAction)

        let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { Void in
        }
        addAction(cancelAction)
    }
}
在调用另一个
self.init
之前,我还尝试调用了
self.init()
,但它崩溃了


是否可以创建一个没有参数的
便利init

子类化注释
UIAlertController类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不能修改。

只需扩展UIAlertController即可

extension UIAlertController {

    public convenience init?(test: String) {
        let title = NSLocalizedString("ALERT_CHOOSE_AVATAR_TITLE", comment: "")
        let message = NSLocalizedString("ALERT_CHOOSE_AVATAR_MESSAGE", comment: "")
        self.init(title: title, message: message, preferredStyle: .actionSheet)

        let selectPremadeAvatarAction = UIAlertAction(title: NSLocalizedString("SELECT_PREMADE_AVATAR", comment: ""), style: .default) { Void in

        }
        addAction(selectPremadeAvatarAction)

        let chooseFromGalleryAction = UIAlertAction(title: NSLocalizedString("CHOOSE_FROM_GALLERY", comment: ""), style: .default) { Void in

        }
        addAction(chooseFromGalleryAction)

        let takeNewPictureAction = UIAlertAction(title: NSLocalizedString("TAKE_NEW_PICTURE", comment: ""), style: .default) { Void in

        }
        addAction(takeNewPictureAction)

        let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { Void in
        }
        addAction(cancelAction)
    }

}

检查方法self.init(title:title,message:message,preferredStyle:.ActionSheet)是否正在调用super.init?已用我的完整方法更新。当我在另一个
self.init(标题、消息、样式)
之前调用
self.init()
时,它会在self.init()行上崩溃是的,您可以创建一个没有参数的便利init。@Prabhu.Somasundaram如果我在另一个初始值设定项之前添加
self.init()
,我会遇到运行时错误