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()
,我会遇到运行时错误