2010-09-25 95 views
0

添加上拖动其他对象我有一个列表视图类那就像NSCollectionView 需要额外的原型项目和原型视图而没有任何用途的。 在Interface Builder中从库中删除NSCollectionView时,会自动创建这两个帮助程序项目。然而,我找不到一个处理这个用例的官方Apple官方文档(描述它是如何完成的)。IBPlugin:从IB图书馆

挖掘苹果开发指南我可以找到“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]; 
} 

但是......

... IB增加了NSCollectionView 这些辅助项目仅在实际初始从库中拖动,而不是在“ibDidAddToDesignableDocument:”的任何其他调用中,例如在嵌入,复制或复制项目时。 (虽然我的方法和所有)

这让我想知道苹果公司是否真的使用“ibDidAddToDesignableDocument:”这个,如果我在这个正确的轨道上。

如何正确模仿这一点?我很难区分“ibDidAddToDesignableDocument:”的不同上下文。任何人都成功完成了这个?
不幸的是,Google,Google Code,GitHub或文档都没有发现任何有用的信息,所以我急需这里的帮助。 :(

在此先感谢

编辑:哦,太好了,这个问题只是给我带来的风滚草徽章,耶不
我更到真正有用的答案,但我还是谢谢你;)

!。

回答

0

我在前段时间做过的插件上挣扎着。在我的情况下,我能够检查对象的属性,看它是否已经被初始化,并在这种情况下跳过添加辅助对象。我相信BWToolkit使用一些类似的内部检查。难道你不能检查你的对象的'prototypeItem'属性,看看你是否需要跳过创建你的辅助对象?

+0

呃,那受伤了。不,它确实如此。 :(* head->桌子*谢谢,你最后的建议完美无缺地:) – Regexident 2010-10-05 14:04:42