2013-05-04 78 views
1

可以將觀察者放在NSArrayControllerselectedIndex方法上。這種方法有一些缺點我認爲:NSArrayController更改其選擇:捕獲此事件的最佳方法是什麼?

  • arrangedObjects重新排列後會發生什麼?我承認這不是一個非常重要的問題

  • 如果我們要求觀察者記住selectedIndex的舊值,它不起作用。它是已知的,但我無法再找到鏈接。

爲什麼NSArrayController沒有委託? 是否有另一種方法來實現我想要做的事情:在選擇更改時啓動一些方法?

+0

我的界面中沒有「TableView」... – Colas 2013-05-04 16:06:15

+0

你說得對! – Colas 2013-05-04 16:26:35

+0

如何觸發選擇更改?你考慮過KVO嗎? – Wain 2013-05-05 06:28:18

回答

4

觀察selection密鑰的NSArrayController(它是從NSObjectController繼承)。

這將返回NSMultipleValuesMarker(當選擇多個對象),NSNoSelectionMarker(什麼也沒有選擇時),或者表示其隨後可通過self關鍵查詢的原始對象值所選擇的對象的代理。

如果重新排列對象實際上沒有改變選擇,它將不會改變。

您也可以觀察selectedObjects;在這種情況下,你將不需要處理標記。

+0

謝謝!你能更精確地看到「觀察NSArrayController的選擇鍵」嗎?你可以訂購一些代碼嗎? – Colas 2014-01-23 23:09:35

+1

@Colas通過調用'[arrayController addObserver:self forKeyPath:@「選擇」...]'並執行'observeValueForKeyPath:...''',您可以通過觀察'selectedIndex'的方式完成此操作。它是'NSArrayController'的一個普通屬性,你可能從文檔中遺漏了它,因爲它是從超類繼承的。 – hamstergene 2014-01-24 06:35:14

+0

您是否認爲創建一個'NSTableView'(不會顯示)並使用委託方法會更好? – Colas 2014-01-24 07:47:31

相關問題