2012-02-06 40 views
2

我正在設置綁定到NSTreeController的NSOutlineView,該實例填充了NSTreeNode實例,後者使用[NSTreeNode treeNodeWithRepresentedObject:...]附加了我的自定義NodeData對象。 大綱視圖呈現得很好,所有數據都像預期的那樣,都很好。NSOutlineView + NSTreeNode:我的自定義數據在哪裏?

現在在大綱視圖的委託中,我試圖通過 outlineView:willDisplayCell:forTableColumn:item:方法更改呈現樣式。

但是,item參數不會讓我回到我的自定義數據!

id stuff = [item representedObject]; 

產生NSTreeNode類的一個實例,其中的項目是NSTreeControllerTreeNode

這是怎麼回事? 根據所有的文檔和示例代碼,我能找到的representedObject調用應該給我構建樹時,後面我塞到NSTreeNode的NodeData對象..

完全一無所知,因爲我似乎有這唯一的人問題,所以我必須在某個地方做一些非常愚蠢的事情 - 但我看不出代碼有什麼問題。

填充編程方式使用setContent:[dataSource sillyHack] 這種瑣碎內容的樹控制器顯示相同的行爲:

- (NSMutableArray *) sillyHack 
{ 
    NSMutableArray *nodeArray = [NSMutableArray array]; 

    NodeData *scaleTypeListNode = [[NodeData alloc] initWithName:@"123"]; 
    NSTreeNode *scaleTypeListTreeNode = [NSTreeNode treeNodeWithRepresentedObject:scaleTypeListNode]; 
    [scaleTypeListNode release]; 

    [nodeArray addObject:scaleTypeListTreeNode]; 
    return nodeArray; 
} 

任何幫助表示讚賞。

回答

1

您應該使用自己的數據實例填充NSTreeController,而不是NSTreeNode。