cocoa-touch - 在扩展中添加便利的初始值设定项并在子类上调用它们

标签 cocoa-touch inheritance swift

我正在尝试向 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/

相关文章:

ios - 上传符号运行脚本显示错误 "error: No API Key or Google Services file provided"

iphone - Objective-C中什么样的方法或操作会相对多使用一点CPU

ios - SpriteKit SKAction 缓动

cocoa-touch - UIPopoverController 与 PresentFromBarButtonItem 一起使用时设置高度

swift - 协议(protocol)之间的实现冲突

swift - 使用向下转换 "!"拆分 json 字符串不起作用

ios - 在 iOS 中检索 WPA2 Enterprise 用户名

c# - 如何检查该类型是从某些接口(interface)继承的 C#

Java:在跳过中间继承的父类(super class)时调用基父类(super class)方法

Swift 将全局变量传递给@IBAction 函数?