根据您的描述,很难准确地说出您在描述什么,但让我们看看我是否理解您的意思。您希望每次单击“+”时都将自定义视图程序集的“副本”添加到拆分视图中,对吗?
绝对最好的方法是将要复制的自定义视图程序集(“原型”)放在它自己的 xib 中。对于您要表示的每个对象,您将从 xib 实例化一个新副本并将其提供给某个所有者,然后将其添加到某个父视图(在您的情况下为拆分视图......对于无限数量的视图来说很奇怪,但我没有足够的细节来说明)。
所以。在现代 Cocoa 世界中,这样的视图组件应该有自己的视图控制器(NSViewController)。这使您的事情变得更容易,因为 xib 的文件所有者将是您的 MyCustomViewController 的一个实例,其 -view 连接到 xib 中的主容器视图(您的自定义视图及其所有子视图)并且其 -representedObject 设置为任何模型您的自定义视图代表的对象。然后,您的应用程序将维护模型对象的所有视图控制器的列表(可能是数组或字典)。有关如何从 nibs/xibs 加载的详细信息,请参阅此 SO 问题/答案。
这基本上是NSCollectionView的工作方式(尽管视图必须全部相同 - 可能不适合您)。在这种情况下,集合视图对应于您的拆分视图;NSCollectionViewItem 对应于你的 MyCustomViewController (实际上在 10.5 及以上版本 NSCollectionViewItem 是 NSViewController 的子类);您的自定义视图是集合视图项的主视图。对于集合中的每个模型对象,它实例化一个 NSCollectionViewItem 并从 xib 加载视图原型(理想情况下,但这是可选的),并使用它来设置项目的视图,然后设置项目的表示对象(模型对象) .
我希望这能澄清一些事情。为了充分了解具体细节,您需要阅读一些内容,但如果您仍然遇到困难,您可以尝试编辑您的问题以澄清或提出一个新的、更具体的问题。