objective-c - 10.6/Xcode 3.2 中的 NSCollectionView

标签 objective-c cocoa osx-snow-leopard nscollectionview copywithzone

在 Xcode 3.1.2 中,我曾经像这样在我的 NSCollectionViewItem 子类中加载 NSCollectionViewItem 的 Nib :

-(id)copyWithZone:(NSZone *)zone
{   
    id result = [super copyWithZone:zone];

    [NSBundle loadNibNamed:@"PersonView" owner:result];

    return result;
}

在 10.6 下的 Xcode 3.2 中,相同的方法不会产生错误,但它也不会在 NSCollectionView 中加载 View 。

是否需要执行其他操作才能显示 View ? 或者是否有更好的方法来实现这一点,将 NSCollectionItem 的父类(super class)更改为 NSViewController

毕竟,重写 copyWithZone 以实现此标准功能对我来说总是很困难。我认为应该能够指定应该在 IB 中使用的 Nib ,但 Apple 似乎不这么认为。

我确实看过文档中提供的示例,但是 NSCollectionViewItem 是使用 initWithNibName 以编程方式实例化的,但我想在国际文凭。

更新:

我按照 kperryua 的建议做了,但现在我无法从 NSCollectionViewItem 访问导出。这是我正在尝试做的事情:

- (void)setRepresentedObject:(id)object {

    if (object) {
        [labelName setValue:[object name]];
    }
}

我将标签名称绑定(bind)到文件所有者,即我的 NSCollectionViewItem。这曾经在 10.5 中完美运行,但现在没有分配 socket (我用 GDB 检查过)。

image showing the bindings http://img21.imageshack.us/img21/671/picya.png

更新 2:

我还将 NSCollectionViewitemPrototype 绑定(bind)到我的 NSCollectionViewItem(PersonController) 子类。

image showing bindings http://img503.imageshack.us/img503/4672/pic2d.png

现在 PersonView.nibFile's OwnerNSCollectionViewitemPrototype 都指向我的子类。

image showing console output http://img340.imageshack.us/img340/6184/pic3.png

如您在屏幕截图中所见,项目已显示,但无法更改标签文本,因为导出 labelName 不可访问。

我还记录了我试图设置的名称,以确保它不是“名称”。

需要做什么来改变标签的值?

如有任何帮助,我们将不胜感激。

最佳答案

是的,Snow Leopard 让这一切变得更容易。在 IB 中,单击 NSCollectionViewItem 并设置 nib 名称和包名称(只需将主包留空)。在您的 PersonView nib 中,使 NSCollectionViewItem 成为文件的所有者并将 -view 导出连接到该 nib 中的 View 。 (看起来你可能已经在那个 nib 中进行了这样的设置。)其他一切都应该是自动的,并且不需要覆盖 copyWithZone:。

关于objective-c - 10.6/Xcode 3.2 中的 NSCollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1484263/

相关文章:

iphone - GKTurnBasedMatch matchData 的最大大小

objective-c - 线程嵌套 for 循环

cocoa - 无法让 AVPlayerLayer 在 NSView 中显示视频

cocoa - Spotlight 插件读取 NSDocument 导致控制台中出现 "deny file-write-data"错误

python语言环境奇怪的错误。这里到底发生了什么?

python - Snow Leopard、Homebrew python 2.7、virtualenv、libjpeg 和 PIL = 导入错误

objective-c - 语法 self = [self init] 在初始化方法中是否可以接受?

objective-c - 表格 View 的最后四行不会从键盘下方移出

objective-c - 如何在 Cocoa 程序中将 View 滑入和滑出窗口

python - 如何在 Snow Leopard 和其他 32 位/64 位问题上强制 Python 为 32 位