3

我有一個自定義<NSOutlineViewDataSource>,爲此我將其NSOutlineView更新selectionIndexPaths屬性。我無法獲得bind:toObject:withKeyPath:options:實際綁定正確。基本上,我需要我的數據源來知道選擇哪個項目。綁定NSOutlineView的選擇索引路徑

當我綁定到selectionIndexes(由NSTableView的聲明)或selectionIndexPaths,該文件表明我應該能夠(通過NSOutlineView聲明)(除非出於某種原因,該網站僅提供IB),我得到一個運行時異常的大綱視圖不是符合任何鍵的「鍵值編碼兼容」。

當我綁定到selectedRowIndexes(回退,因爲我需要然後採取這些信息並對其進行逆向工程以找出哪個父/子對被選中),它會更新數據源一次,其中NSIndexSet數據源被凍結到其初始值。我也沒有手動設置它。此外,我甚至無法將selectedRowIndexes綁定到其他方向,因此數據源可以更新大綱視圖的選擇。我在大綱視圖中獲得了相同的「鍵值符合編碼」的例外。

我有一個@property在我的數據源類中定義了一個備用ivar,並且在數據加載後,我在控制器類中引用了數據源和大綱視圖,在-awakeFromNib中將其綁定。

回答

1

與其結合selectionIndexPaths,其作用不可靠,我代替我的大綱查看代表以更新-outlineViewSelectionIsChanging:-outlineViewSelectionDidChange:通知上模型中的選擇。

2

Dov,你有沒有考慮過使用NSTreeController來定製綁定?或者,你可以設置你的控制器作爲大綱視圖的委託接收與方法的選擇的通知「-outlineViewSelectionDidChange」

Source

+0

我以前使用NSTreeController,但我想要更多的自定義行爲。此外,'-outlineViewSelectionDidChange'只會在用戶點擊新行時觸發,而不是用於鍵盤導航。 – Dov

+0

這是非常晚,但無論如何這裏是一個評論。我正在制定一個與大綱視圖相協調的自定義視圖。箭頭鍵可以很好地改變選擇(對我來說)。我還可以找出從selectedIndex集合中選擇了哪個對象。幸運的是,我的對象知道他們的父母以及他們的孩子,所以如果我需要索引集,它很容易計算。我習慣了,從NSTreeController,但我可能不需要它。 –