如何绑定nib自定义视图到NSVIew子类



我有一个简单的要求。在点击+按钮,我试图添加一个自定义视图到SplitView

我已经创建了一个类MyCustomView它是NSView的子类

在应用程序的nib文件中,我有一个包含按钮等的自定义视图。

现在如何分配一个新的MyCustomView每次?

有这样做的例子吗?

我希望是这样的

MyCustomView *v1 = [[MyCustomView alloc] init];
..
..
[splitView addSubView:v1];
[splitView addSubView:v2];

请帮

根据你的描述很难确切地说出你在描述什么,但让我们看看我是否理解你。您希望每次单击"+"时将自定义视图组件的"副本"添加到拆分视图中,对吗?

要做到这一点,最好的方法是将要复制的自定义视图程序集("原型")放在自己的xib中。对于你想要表示的每个对象,你将从xib实例化一个新的副本,并将其赋予某些所有者,然后将其添加到某些父视图(在你的情况下是拆分视图)。奇怪的是无限的观看次数,但我没有足够的细节来说明。

。在现代Cocoa世界中,这样的视图程序集应该有自己的视图控制器(NSViewController)。这使得事情对你来说更容易,因为xib的文件的所有者将是你的MyCustomViewController的一个实例,它的-view连接到xib(你的自定义视图及其所有子视图)的主容器视图,其- representdobject被设置为你的自定义视图所代表的任何模型对象。然后你的应用程序将维护一个列表(一个数组或字典,也许)所有的视图控制器的模型对象。关于如何从nib/xib加载,请参阅这个问题/答案。

这基本上就是NSCollectionView的工作方式(尽管视图必须都是相同的大小-可能不适合你)。在这种情况下,集合视图对应于你的分屏视图;NSCollectionViewItem对应于你的MyCustomViewController(事实上在10.5及以上版本NSCollectionViewItem是NSViewController的一个子类);自定义视图是集合视图项的主视图。对于其集合中的每个模型对象,它实例化一个NSCollectionViewItem并从xib中加载视图原型(理想情况下,但这是可选的),并使用它来设置项目的视图,然后设置项目的表示对象(模型对象)。

我希望这能澄清一些事情。为了理解足够的细节,你需要做一些阅读,但如果你仍然卡住了,你可以试着编辑你的问题来澄清,或者打开一个新的、更具体的问题。

最新更新