Swift:如何为没有参数的UIAlertController创建一个方便的init

时间:2016-02-19 07:15:13

标签: ios swift uialertcontroller convenience-methods

我正在尝试为子类convenience init创建一个没有参数的UIAlertController,但它给了我一个错误。

它给了我这个错误:

在调用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

2 个答案:

答案 0 :(得分:0)

你想在子类化UIAlertController中实现什么目标?

子类注释

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

答案 1 :(得分:0)

只需扩展UIAlertController。

.toList()