gpt4 book ai didi

cocoa - NSButtonCell 与 NSButton

转载 作者:行者123 更新时间:2023-12-03 16:06:24 24 4
gpt4 key购买 nike

我一直在阅读有关 NSButtons 和 cells 的 Apple 文档,但我似乎真的无法理解两者之间的区别。更复杂的是,它们似乎都有大量重叠的方法,例如 setTitle: 等,而且我不确定应该使用哪些方法。

谁能解释一下基本区别是什么?

谢谢,
泰贾

最佳答案

您可以将控件视为单元格的代表或“代理”。1 该控件是一个 NSView,在这些情况下这意味着两件重要的事情。首先,它代表要在其中绘制的窗口区域。其次,它接受用户交互。2

不过,该控件本身并没有做太多事情。细胞是完成所有工作的东西——例如,请注意,细胞可以将自己绘制到给定的框架中。这是 View 的责任,但控件将其推迟到单元格,只是提供一个用于绘图的区域。

同样,当用户单击控件时,控件会接收事件并弄清楚其含义,但响应事件而执行操作的工作将传递给单元格。

如果您查看各种控件/单元对的文档(NSButtonNSButtonCell 就是这样的一对),您会看到提到“覆盖”方法。这意味着该控件具有与其对应单元格相同名称的方法,这些方法只是调用该单元格的方法。这就是你提到的重复的根源。当您想使用其中一种方法时,请在控件上调用它 - 作为该对的公共(public)面孔,它很可能只是简单地询问单元格。

Apple 提供的最佳交互描述是 "How Controls and Cells Interact"在控制和单元编程主题指南中。

<小时/>

1从 Actor 有经纪人来获得演出的意义上来说。
2并非所有 View 都严格如此;它实际上是 NSResponder 的一个功能,NSView 继承自该功能。

关于cocoa - NSButtonCell 与 NSButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6112861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com