Rub*_*yAn 5 ios swift uialertcontroller
我正在尝试覆盖 UIAlertController 中的便捷初始化,但它给了我一个错误,例如“初始化程序不会覆盖其超类中的指定初始化程序”。如何使用继承或扩展来覆盖它?我的代码如下。
import UIKit
class ColorAlertViewController: UIAlertController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override convenience init(title: String?, message: String?, preferredStyle: UIAlertControllerStyle, colorCode: String?){
super.init(title: title, message: message, preferredStyle: preferredStyle)
}
}
Run Code Online (Sandbox Code Playgroud)
您没有覆盖任何便利 init,看起来您正在创建一个新的 init。
convenience init(title: String?, message: String?, preferredStyle: UIAlertControllerStyle, colorCode: String?){
self.init(title: title, message: message, preferredStyle: preferredStyle)
}
Run Code Online (Sandbox Code Playgroud)
可能是你想要的,你只需要处理颜色代码
看来你得绕一圈了:
首先创建一个创建扩展
extension UIAlertController
{
class func create(title: String?, message: String?, preferredStyle: UIAlertControllerStyle) -> AnyObject
{
return UIAlertController(title: title, message: message, preferredStyle: preferredStyle);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在 ColorAlertViewController 中,您将创建另一个函数来创建该对象:
class func createWithColor(title: String?, message: String?, preferredStyle: UIAlertControllerStyle, colorCode: String?) -> AnyObject
{
var c = super.create(title, message: message, preferredStyle: preferredStyle);
//handle color code here
return c;
}
Run Code Online (Sandbox Code Playgroud)
现在无论你想在哪里创建这个对象,只需调用
var colorAlertView = ColorAlertViewController.createWithColor("title Name", message: "the message", preferredStyle: .ActionSheet, colorCode: "the color");
Run Code Online (Sandbox Code Playgroud)
当然,这在 UI 构建器中不起作用,您必须通过代码创建它。