2013-05-04 81 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

相关问题