2010-09-25 50 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