2012-01-01 92 views
5

我有一個基於視圖的NSOutlineView綁定到NSTreeController。一切似乎都正常工作,直到我在我的委託中實施outlineView:isGroupItem:方法,然後組頭突然停止顯示。像這樣基於視圖的NSTableView/NSOutlineView和isGroupItem

enter image description here

我證實,如果我改變NSOutlineView到細胞爲主,然後作爲組項目正常顯示了。對於NSTableView也觀察到類似的行爲。有其他人遇到過這個問題嗎?

回答

11

解決了!

通過用相同的標識符作爲柱定位視圖原來我不得不實現在NSOutlineView委託以下方法

- (NSView *)outlineView:(NSOutlineView *)outlineView 
    viewForTableColumn:(NSTableColumn *)tableColumn 
        item:(id)item { 
    if ([self outlineView:outlineView isGroupItem:item]) { 
     NSString *vId = [[[outlineView tableColumns] objectAtIndex:0] identifier]; 
     return [outlineView makeViewWithIdentifier:vId owner:self]; 
    } 
    return [outlineView makeViewWithIdentifier:[tableColumn identifier] owner:self]; 
} 

顯然,通過基於NSOutlineView生成視圖爲表中的每個單元格的默認視圖。但是,在組項目/組行的情況下,沒有與該行關聯的tableColumm,因此該視圖變爲零並且不顯示。

玩弄蘋果的TableViewPlayground sample project真的有幫助!強烈推薦!

+0

感謝您的詳細更新。 – 2012-01-02 00:19:32

+0

+1對於TableViewPlayground引用 – rluba 2013-06-09 09:34:33

+0

爲什麼'[outlineView:viewForTableColumn:item:'在[官方'NSOutlineViewDelegate'文檔](https://developer.apple.com/library/mac/documentation/cocoa/reference/ NSOutlineViewDelegate_Protocol/Reference/Reference.html) – zakdances 2013-09-12 10:46:19

相關問題