2014-04-08 44 views
0

我有一個NSOutlineView通過NSTreeController從數組中填充。我想使它具有子項的行不可編輯,並且隱藏這些行中的彈出窗口。你可以在附件截圖中看到我的大綱視圖 - 它本質上是一個設置樹。如何鎖定由NSTreeController填充的NSOutlineView中的父行

我該如何解決這個問題,還是需要通過委託來實現數據源,而不是使用NSTreeController來實現呢?

Here's a screenshot

回答

0

你有沒有進去看了delegate methods

具體地說有趣是

– outlineView:shouldEditTableColumn:item: 

這允許以確定是否項目可編輯。只要檢查孩子,如果項目是父母和return NO;

隱藏彈出式按鈕取決於你如何設置你的NSOutlineView。在基於單元格的輪廓視圖中,使用例如

– outlineView:willDisplayCell:forTableColumn:item: 

隱藏父行的單元格內容。在基於大綱視圖的視圖中,另一種方法用於自定義某些列:

– outlineView:viewForTableColumn:item: 

這應該很容易用來實現您的結果。

+0

確定很酷這有幫助,但我不知道最後一步 - 實際上隱藏單元格(我使用基於單元格)。我嘗試過使用'[cell setHidden:YES]'但是拋出無法識別的選擇器 –

+0

確保你隱藏彈出按鈕...我不知道細胞設置的心臟,但彈出按鈕可能是細胞的一個元素 – Volker

+0

這個單元格實際上是一個NSPopUpButtonCell,所以錯誤是'[NSPopUpButtonCell setHidden:]:無法識別的選擇器' –

相關問題