我一直在阅读有关NSButtons和单元格的Apple文档,我似乎无法理解两者之间的区别。除了这种复杂性,看起来他们都有像setTitle:
等方法的大量重叠,我不知道我应该使用哪些。NSButtonCell vs NSButton
任何人都可以解释基本的区别是什么?
感谢,
Teja公司
我一直在阅读有关NSButtons和单元格的Apple文档,我似乎无法理解两者之间的区别。除了这种复杂性,看起来他们都有像setTitle:
等方法的大量重叠,我不知道我应该使用哪些。NSButtonCell vs NSButton
任何人都可以解释基本的区别是什么?
感谢,
Teja公司
呦你可以将控制想象成一个单元的代表或“代理”。 该控件是一个NSView
,这意味着在这些情况下两个重要的事情。首先,它代表了一个窗口的区域,其次是它接受用户交互。
尽管如此,控制本身并没有太大的作用。细胞就是完成所有工作的东西 - 例如,注意细胞可以将自己吸引到给定的框架中。这是一种观点的责任,但是控制将这种情况推迟到细胞,只是提供一个绘图区域。同样,当用户点击一个控件时,控件接收到该事件并计算出它的含义,但是响应该事件执行一个动作的工作被传递给该单元。
如果你看看各种控制/单元对的文档(NSButton
和NSButtonCell
就是这样一对),你会看到提及“覆盖”方法。这意味着该控件具有与其对应单元相同名称的方法,该方法只需调用该单元的名称即可。这是你提到的重复的来源。当你想使用这些方法中的一种时,在控制器上调用它 - 作为这一对的公共面孔,它很可能简单地问单元。
在Control and Cell Programming Topics指南中,Apple提供的最佳交互描述是"How Controls and Cells Interact"。
在具有谁采购演出代理一个演员的感觉。
这并不完全正确的所有意见;它实际上是的一个功能,从NSView
继承。
NSButton单元具有绘图和行为很多更cutomizable选项。的差异更清楚地看到在他们从(NSButtonCell从ActionCell类继承继承的类,而NSButton从的NSControl类继承
在文档更好看看:
你应该选择根据您要如何绘制和行为的按钮。如果你想,一个简单的按钮使用NSButton。
我不知道我跟着你。 “NSButtonCell”不是“NSButton”的一部分吗?我认为分配'NSButton'并调用'[button cell]'返回与它关联的'NSButtonCell'。这就是我所困惑的。 – 2011-05-24 17:03:36
摘自Cocoa Programming for OS X: The Big Nerd Ranch Guide
“细胞处理控制的实现细节。对于大多数部分,单元格的属性和方法在相应的控件中被相同的属性和方法“覆盖”。对于 实例,当您更改标签上的标题时,标签的单元格 正在执行该工作,但您将与该标签的stringValue 属性进行交互。
细胞在可可中有很长的历史。它们最初被添加用于解决性能问题 :控制的许多基本任务都被交给了单元,这可以比控制更有效地执行更多 。
Mac电脑比当时更强大 ,电池已成为一种负担。 苹果已经表示,它是在贬低细胞的过程,但 你仍然会看到他们在你的文档大纲,并在旧的代码。”
NSButtonCell
是用来实现的用户界面的NSActionCell
一个子类按钮,开关和单选按钮。它也可以用于视图的任何其他区域,该区域旨在单击时向目标发送消息。 NSControl
的NSButton
子类使用单个NSButtonCell
。要创建交换机组或单选按钮,请使用NSMatrix
,其中包含一组NSButtonCell
。
我看到它和UIView和CALayer是一样的吗? – onmyway133 2016-01-18 15:33:55