关于Cell
和Control
本主题提供有关NSCell
和NSControl
的基本信息。
关于NSCell
NSCell
类提供了一种在NSView
中显示文本或图像的机制,而没有完整的NSView
子类的开销。特别是,它通过对App中所有NSCell
实例所使用的共享NSText
对象的访问,提供了NSText
类的许多功能。NSCell
对于在NSView
的自定义子类中的各个位置放置文本或图像也非常有用。
大多数NSControl
类都大量使用NSCell
来实现其内部工作。例如,NSSlider
使用NSSliderCell
,NSTextField
使用NSTextFieldCell
,NSBrowser
使用NSBrowserCell
。向NSControl
发送消息通常比直接处理相应的NSCell
更简单。例如,NSControls
通常在更改Cell
属性后调用updateCell:
(使Cell
显示)。相反,如果直接调用NSCell
的相应方法,则NSCell
可能不会再次自动显示自身。
NSControl
的某些子类(尤其是NSMatri
x)将NSCell
按某种协作方式组合在一起。因此,使用NSMatrix
,你可以实现大小统一的单选按钮
组,而无需每个按钮
都具有NSView
(并且不需要NSText
对象作为每个按钮
上的文本的字段编辑器)。
NSCell
类提供了用于显示文本或图像,编辑文本,设置和获取对象值,维护状态,突出显示和跟踪鼠标的原始方法。NSCell
的方法trackMouse:inRect:ofView:untilMouseUp:
实现了将动作消息发送到Target
对象的机制。但是,NSCell
只是抽象地实现了Target/Action
功能,它将实现的细节放到了NSActionCell
及其子类。
关于NSControl
NSControl
是一个抽象超类,提供了用于实现用户界面设备的三个基本功能。首先,作为NSView
的子类,NSControl
绘制或协调绘制设备的屏幕表示。其次,它通过覆盖NSResponder
的mouseDown:
方法并在响应者链中提供位置来接收并响应用户生成的事件。第三,它实现了sendAction:to:
方法,以向NSControl
的Target
对象发送操作消息。在Application Kit中定义的NSControl
的子类是NSBrowser
,NSButton
(及其子类NSPopUpButton
),NSColorWell
,NSImageView
,NSMatrix
(及其子类NSForm
),NSScroller
,NSSlider
,NSTableView
和NSTextField
。具体的NSControl
子类的实例通常简称为控件
。