斯威夫特(1.0)的继承让我疯狂无法相信.我可以相信必须要问一些像这样简单但我无法弄明白的事情.我有我的自定义视图,我希望能够使用init(frame:CGRect)以编程方式创建,并从故事板加载它,在这种情况下应该使用init(coder aDecoder:NSCoder)进行初始化.在这两种情况下,我想调用我的自定义安装方法.像这样:
import UIKit
class CustomView: UIView {
override convenience init(frame: CGRect) {
super.init(frame: frame)
self.myCustomSetup()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.myCustomSetup()
}
func myCustomSetup() {
self.backgroundColor = UIColor.redColor()
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,从快速文档我明白应该只有一个指定的初始化程序,所有的便利初始化程序调用.在UIView的情况下,这应该是init(编码器aDecoder:NSCoder).然而,我无法创建aDecoder: NSCoder,init(frame: CGRect)我也不能传递nil,因为它不是可选的.我该怎么办 ?我怎样才能覆盖它们?
一个类必须至少有一个指定的初始值设定项.它可能不止一个.
所有你必须做的,使你的代码的工作就是删除关键字convenience从init(frame: CGRect).
| 归档时间: |
|
| 查看次数: |
8887 次 |
| 最近记录: |