[英]providing a designated initializer for a custom NSView in Swift
我有一个自定义NSView类,看起来像:
class MyClass: NSView
{
var myClassVar: NSColor
}
当然,Xcode抱怨我的类没有初始化器,所以我需要覆盖指定的初始化器,以便初始化myClassVar。
我怎样才能做到这一点?
尝试这个;
class MyClass: NSView
{
var myClassVar: NSColor! // the optional mark ! to be noticed.
override init(frame frameRect: NSRect) {
super.init(frame:frameRect);
}
required init(coder: NSCoder) {
super.init(coder: coder)
}
//or customized constructor/ init
init(frame frameRect: NSRect, otherInfo:Int) {
super.init(frame:frameRect);
// other code
}
}
如果为颜色指定默认值,则NSView的初始化程序仍然有效。
以下是几种方法:
var myClassVar: NSColor?
var myClassVar: NSColor! // make sure to set this before you actually access it
var myClassVar: NSColor = NSColor.clearColor()
第二个例子(隐式解包可选)是Apple对IBOutlets的处理。 否则,您需要一个初始化程序,将每个变量设置为init方法中的非null值。
有关此内容的更多信息,请参阅Swift初始化和Option of Painals ,其中讨论了以下解决方案:
NSColor?
),在super.init之后实例化它 NSColor!
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.