2012-09-01 53 views
0

我有一些我想在NSOutlineView中呈現的分層數據模型。我將樹控制器綁定到大綱視圖以提供數據並處理對其他視圖的選擇和綁定。是否可以將NSTreeController綁定到NSOutlineViewDataSource?

但是,我只想在我的模型中只顯示部分的到大綱視圖。 (我的層次結構中的每個對象都有一個子對象數組,但我只想讓這些子對象中的一些顯示爲樹中節點的子節點。)我希望我可以將過濾器謂詞附加到樹控制器,但似乎NSOutlineView不支持過濾器謂詞。

認爲這個設計需要一個NSOutlineViewDataSource來過濾我的數據模型,並綁定一個NSTreeController到數據源和大綱視圖。但是,樹控制器(內容數組,內容對象,內容集等)中的綁定插口都不適合綁定數據源。

任何想法?在此先感謝...

回答

0

您可以嘗試通過數組控制器將數據饋送到您的子對象數組。

下面是我該怎麼做。覆蓋您表示的對象中的訪問器方法,並從您的數組控制器中返回一個已過濾的數組。

0

一般來說,NS [Outline | Table] ViewDataSource和Cocoa Bindings是一個「或/或」的選擇。混合這些方法,雖然也許不嚴格不可能,可能會導致不可預知的結果。

您提到將過濾器謂詞綁定到大綱視圖本身而不是特定節點,所以我推測所有節點的一個過濾器謂詞可能「足夠好」。如果是這種情況,那麼一個解決方案是在您的模型上展示第二個兒童自動販賣財產,也許是filteredChildren,並告訴NSOutlineView使用它來訪問兒童,而不是您的默認/完整兒童自動販賣財產。如果您需要拖放重新排序等功能,這種方法可能被證明是不平凡的,但無論如何,應該很容易探索這種方法。

如果您需要針對每個節點使用不同的過濾器,或者過濾器動態變化,那麼這個任務可能會跨越成爲實施NSOutlineViewDataSource(以及使用Cocoa綁定的可能候選人)的一個很好的候選人。 )

相關問題