我对创建自定义视图有疑问。我想实现一个接口,我希望在一个地方配置不同的对象,每个对象都有自己的控件。有点像自动机,在右侧视图中,工作流以不同的动作显示。那些NSView或NSCell子类? 任何一个例子将不胜感激!
肯
答案 0 :(得分:1)
以下是分析NSCell和NSView的方法:
NSCells基本上都是邮票。给定一定的值/对象,NSCell知道如何在屏幕上绘制您想要的值。就像NSTextCells知道如何在屏幕上绘制NSString的方式。 NSCells没有状态,不记得任何东西,它们只是一组用指定值/对象执行的绘图指令。我们的想法是尽可能地重复使用NSCells,使屏幕上的绘图内容变得非常简单。
NSViews是屏幕上发生的事情的逻辑容器。他们可以在技术上做自己的绘图,但其中相当一部分使用NSCells进行绘图。例如,NSTextField使用NSTextCell在屏幕上绘制文本,它还包含在编辑和非编辑之间切换所需的额外逻辑,方法是显示您在编辑期间可以键入的文本框,以及在不编辑时使用NSTextCell编辑。 NSViews也是响应者链的一部分,可以响应鼠标点击,键盘事件和排序。
你可能最终会同时使用两个NSView来保存你想要用来配置每个对象的所有控件,而NSCells可以用来绘制自定义UI元素(比如你使用非标准控件)。