在Xcode 3.1.2我用来加载NSCollectionViewItem
的笔尖在我的NSCollectionViewItem
子类是这样的:NSCollectionView在10.6/3.2的Xcode
-(id)copyWithZone:(NSZone *)zone
{
id result = [super copyWithZone:zone];
[NSBundle loadNibNamed:@"PersonView" owner:result];
return result;
}
在Xcode中3.2 10.6相同的方法下不产生发生错误,但它不会加载NSCollectionView
中的视图。
是否还有其他事情需要完成才能使视图显示出来? 或者是否有更好的方法来做到这一点,NSCollectionItem
的超类更改为NSViewController
?
毕竟,重写copyWithZone
来实现这个标准功能总是对我来说似乎是一种破绽。我认为应该能够指定应该在IB中使用的笔尖,但似乎Apple不这么认为。
我看过了文档中提供的示例,但NSCollectionViewItem
使用initWithNibName
以编程方式实例化,但我想在IB中创建它。
UPDATE:
我做了什么kperryua建议,但现在我不能从NSCollectionViewItem
访问网点。这里就是我想要做的事:
- (void)setRepresentedObject:(id)object {
if (object) {
[labelName setValue:[object name]];
}
}
我绑定的标签名称文件所有者这是我NSCollectionViewItem
。过去在10.5中完美工作,但现在没有分配出口(我使用GDB检查过)。
image showing the bindings http://img21.imageshack.us/img21/671/picya.png
更新2:
我也绑定了NSCollectionView
的itemPrototype
我NSCollectionViewItem
(PersonController)的子类。
image showing bindings http://img503.imageshack.us/img503/4672/pic2d.png
现在PersonView.nib
既File's Owner
和NSCollectionView
点到我的子类的itemPrototype
。
image showing console output http://img340.imageshack.us/img340/6184/pic3.png
正如你在截图中看到的项目都显示,但由于出口labelName
是无法访问的标签的文本不能改变。
我还记录了我想要设置的名称,以确保它不是'名称'。
需要做些什么来改变标签的价值?
任何帮助,将不胜感激。
谢谢。它现在显示出来了,但我无法访问绑定到包含项目视图的笔尖的FileOwner的插口。我现在也必须以不同的方式做到这一点吗? – 2009-09-27 20:45:25
我不确定你的意思。你能详细说明吗? – kperryua 2009-09-27 20:59:44
我编辑了我的答案,向你展示我的意思。 – 2009-09-27 21:01:04