什么对象应该实现 NSCollectionViewDelegate?

What object should implement NSCollectionViewDelegate?

我有一个 subclassed NSCollectionView 在 Interface Builder 中创建并绑定到一个数组。

我需要从 NSCollectionViewDelegate 实现一些委托 classes,但我对 class 将什么指定为委托有点困惑。

我是否只是创建一个随机的 NSObject 并将其指定为委托?我是否创建一个 NSViewController 并将 that 指定为委托——但如果是这样,由于集合视图不是以编程方式创建的,我如何将 NSViewController 绑定到集合视图?

任何指向可以在 Mac 应用程序架构决策中解释此类内容的好文档的指针都是一个很好的奖励。

使视图控制器也成为底层视图对象的委托是很常见的,但不是强制性的。但是,您也可以按照您的建议制作一个新的 class 并使用它。如果这适用于您的整体架构,请执行此操作。

NIB的File's Owner是什么对象?大多数情况下,NIB 应该由 NSWindowControllerNSViewController(或其中之一的 subclass)加载和拥有。该控制器通常负责 NIB 中的所有内容,因此它就是委托。

如果有意义,您可以将集合视图单独放入一个 NIB 中。您将创建 NSViewController 的子 class 来加载和拥有 NIB,并将 NIB 中文件所有者占位符的 class 设置为 class。您将文件所有者的 view 出口连接到集合视图,并将集合视图的 delegate 出口连接到文件所有者。