NSCollectionViewItem
在 Xcode 3.1.2 中,我曾经在我的子类中加载 nib,NSCollectionViewItem
如下所示:
-(id)copyWithZone:(NSZone *)zone
{
id result = [super copyWithZone:zone];
[NSBundle loadNibNamed:@"PersonView" owner:result];
return result;
}
在 10.6 下的 Xcode 3.2 中,相同的方法不会产生错误,但也不会在NSCollectionView
其中加载视图。
是否需要做其他事情才能使视图显示出来?或者有没有更好的方法来改变NSCollectionItem
's superclass to NSViewController
?
毕竟,重写copyWithZone
来实现这个标准功能对我来说似乎总是一种 hack。我认为应该能够指定应该在 IB 中使用的 nib,但 Apple 似乎不这么认为。
我确实查看了文档中提供的示例,但是NSCollectionViewItem
使用 以编程方式对其进行了实例化initWithNibName
,但我想在 IB 中创建它。
更新:
我按照 kperryua 的建议做了,但现在我无法从NSCollectionViewItem
. 这是我正在尝试做的事情:
- (void)setRepresentedObject:(id)object {
if (object) {
[labelName setValue:[object name]];
}
}
我将标签名称绑定到文件所有者,即我的NSCollectionViewItem
. 这曾经在 10.5 中完美运行,但现在未分配插座(我使用 GDB 进行了检查)。
图片显示绑定 http://img21.imageshack.us/img21/671/picya.png
更新 2:
我还将NSCollectionView
's绑定itemPrototype
到我的NSCollectionViewItem
(PersonController) 子类。
图片显示绑定 http://img503.imageshack.us/img503/4672/pic2d.png
现在File's Owner
thePersonView.nib
和itemPrototype
of 都NSCollectionView
指向我的子类。
显示控制台输出的图像 http://img340.imageshack.us/img340/6184/pic3.png
正如您在屏幕截图中看到的那样,项目已显示,但标签的文本无法更改,因为labelName
无法访问插座。
我还记录了我尝试设置的名称,以确保它不是“名称”。
需要做什么来更改标签的值?
任何帮助,将不胜感激。