我正在尝试向 Swift 中的 UIView
添加扩展方法,如下所示:
extension UIView {
convenience init(superview: UIView) {
self.init(frame: CGRect())
superview.addSubview(self)
}
}
稍后,我可以使用这个新的初始化程序,但只能在 UIView 上使用,而且我不知道如何在我自己的子类上使用它。
var poView : UIView = UIView(superview: someSuperview) // Just dandy
var myViewSubclass : MyViewSubclass(superview: someSuperview) // No good.
现在,我的 View 子类实现了 init(frame: CGRect)
和 init(coder: NSCoder)
,目前没有其他实现。
为什么我不能使用便利初始化程序?
最佳答案
为了自动继承附加的便利初始化程序,您的 MyViewSubclass
还必须重写从 NSObject
继承的普通 init()
。
class MyViewSubclass {
override init() {
super.init()
}
...
}
关于cocoa-touch - 在扩展中添加便利的初始值设定项并在子类上调用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25537145/