我尝试创建NSStackView的子类,例如给予它一个特殊的颜色。
要示例化它,我必须调用一个指定为init的超类,如果我理解正确的话。
如何检测NSStackView的指定初始化器?查看https://developer.apple.com/documentation/appkit/nsstackview,我找到的唯一初始化器是:
init(views: [NSView])
下面的代码是这样写的:
“必须调用超类'NSStackView'的指定初始值设定项”
class CStackView: NSStackView
{ init(views: [NSView], withColor color: NSColor)
{ super.init(views: views)
// do something with the color
}
required init?(coder decoder: NSCoder)
{ fatalError("init(coder:) has not been implemented")
}
}
init(coder:)似乎是一个指定的初始化器,但我想初始化CStackView及其子视图,而不是编码器。
2条答案
按热度按时间e5nqia271#
init(views:)
是一个方便的初始化器。NSStackView
没有声明任何指定的初始化器,因此它从它的超类NSView
继承这些初始化器,该超类有init(frame:)
和init(coder:)
你可以让你的初始化器调用
super.init(frame:)
,或者把你的初始化器声明为一个方便的初始化器,然后它可以调用self.init(views:)
。1dkrff032#
在@Dan的帮助下,就是这样。