【发布时间】:2016-02-19 07:15:13
【问题描述】:
我正在尝试为子类UIAlertController 创建一个没有参数的convenience 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(),但它崩溃了。
是否可以创建不带参数的convenience init?
【问题讨论】:
-
检查你的方法 self.init(title: title, message: message, preferredStyle: .ActionSheet) 是否在调用 super.init?
-
用我的完整方法更新。当我在另一个
self.init(title, message, style)之前调用self.init()时,它会在 self.init() 行上崩溃 -
是的,您可以创建一个不带参数的便捷初始化。
-
@Prabhu.Somasundaram 如果我在另一个初始化程序之前添加
self.init(),则会出现运行时错误
标签: ios swift uialertcontroller convenience-methods