我有一个列表视图类,就像 NSCollectionView 一样,需要一个额外的原型项目和一个原型视图才能使用。在 Interface Builder 中从库中删除 NSCollectionView 时,会自动创建这两个帮助项。但是我找不到一个处理这个用例的官方苹果文档(描述它是如何完成的)。
然而,通过 Apple Dev Guides 挖掘,我可以找到“ ibDidAddToDesignableDocument :”。
使用以下代码,我设法从库中创建了我的辅助项目:
- (void)ibDidAddToDesignableDocument:(IBDocument *)document {
[super ibDidAddToDesignableDocument:document];
NSView *prototypeView = [[[NSView alloc] initWithFrame:NSMakeRect(0.0, 0.0, 300, 65.0)] autorelease];
DLListViewItem *prototypeViewItem = [[[DLListViewItem alloc] initWithNibName:nil bundle:nil] autorelease];
[document addObject:prototypeViewItem toParent:nil];
[document addObject:prototypeView toParent:nil];
[document connectOutlet:@"view" ofSourceObject:prototypeViewItem toDestinationObject:prototypeView];
[document connectOutlet:@"listView" ofSourceObject:prototypeViewItem toDestinationObject:self];
[document connectOutlet:@"prototypeItem" ofSourceObject:self toDestinationObject:prototypeViewItem];
}
不过……</p>
…<strong>IB仅在从库中实际初始拖动时为 NSCollectionView 添加这些辅助项目,而不是在任何其他“ibDidAddToDesignableDocument:”调用中,例如在嵌入、复制或复制项目时。(虽然我的方法会,而且总而言之)
这让我想知道 Apple 是否真的为此使用了“ibDidAddToDesignableDocument:”,以及我是否完全在正确的轨道上。
如何正确地模仿这一点?我很难区分“ibDidAddToDesignableDocument:”的不同上下文。有人成功做到这一点吗?
不幸的是,谷歌、谷歌代码、GitHub 或文档都没有透露任何有用的信息,所以我在这里迫切需要帮助。:(
提前致谢!
编辑:哦,太好了,这个问题刚刚给我带来了风滚草徽章,耶!不是。
实际上我更喜欢有用的答案,但无论如何谢谢;)