Swift 如何设置NSView实例属性

Swift 如何设置NSView实例属性,swift,nsview,appkit,Swift,Nsview,Appkit,在中,有一个符号指示图形命令是否将生成任何结果 声明是var-canDraw:Bool{get}——因此无论何时您尝试 @IBOutlet weak var myView: NSView! 然后,myView.canDraw=true,您会得到一个生成时错误,指出“无法分配给属性:'canDraw'是一个仅获取的属性””。但是,如果要在视图中绘制NSRect,如何更改此属性?您不能更改canDraw,因为它是只读的。它是只读的,因为它报告了一个你无法控制的事实,也就是说,这是否是一个你现在可以

在中,有一个符号指示图形命令是否将生成任何结果

声明是
var-canDraw:Bool{get}
——因此无论何时您尝试

@IBOutlet weak var myView: NSView!

然后,
myView.canDraw=true
,您会得到一个生成时错误,指出“
无法分配给属性:'canDraw'是一个仅获取的属性”
”。但是,如果要在视图中绘制NSRect,如何更改此属性?

您不能更改
canDraw
,因为它是只读的。它是只读的,因为它报告了一个你无法控制的事实,也就是说,这是否是一个你现在可以进入的视图

要绘制到视图中,即要实现负责绘制自身的NSView,请将NSView子类化并实现
draw
。例如:


屏幕截图中显示的代码基本上是应用程序中唯一的代码。窗口中的视图是MyView,MyView实现了
draw

,您不需要更改它。阅读文档!它正在向您报告此时您是否有上下文。如果您想负责绘图,只需实现
draw
方法即可@matt我尝试实现
draw
方法,但没有看到任何变化,因此我假设它被忽略,因为
canDraw
是错误的。我的错。我会继续修改
draw
。好吧,那么你需要问问自己为什么
canDraw
是假的。文档中说:“视图对象可以在屏幕上绘制,如果它没有隐藏,它被附加到窗口(NSWindow)中的视图层次结构,并且窗口有相应的窗口设备。”我猜您的视图对象不符合这些标准。