当我尝试设置对此特定键的观察时,什么也没有发生。这就是我的意思。
我有一个带有NSTableView的标准Cocoa应用程序,并且我知道如何根据所选的单元格来更改图像视图中显示的图像。
现在,我正在尝试找出如何根据所选的索引禁用/启用按钮。我的意思是,我在窗口中有一个按钮,它在某些索引上是禁用的。
SomeClass的init方法
-(id)init {
if (self=[super init]) {
[arrayController addObserver:self forKeyPath:@"selectionIndex" options:NSKeyValueObservingOptionNew context:NULL];
}
}但是,当我实现observeValueForKeyPath:方法时,当我选择新索引时,更改不会被提取。事实上,如果我尝试记录它,插座会显示(空)。但是,当我在AppDelegate中添加观察者时,AppDelegate (当被指定为观察者时)获取更改。
是不是有什么原因导致我的通用SomeClass对象不能呢?应该以不同的方式来做吗?
注意:
我尝试将SomeClass子类化为NSWindow,然后将窗口的所有者设置为SomeClass,并在awakeFromNib中设置观察者,这很有效,但似乎不是一个好方法。
发布于 2012-08-07 10:39:20
init方法在这个过程中发生得太早了,在插座连接之前(我认为)。将代码放入awakeFromNib中即可正常工作。这是来自苹果文档中的NSObject类引用:
nib加载基础结构向从nib归档重新创建的每个对象发送
awakeFromNib消息,但前提是归档中的所有对象都已加载和初始化。当一个对象收到一条awakeFromNib消息时,保证它的所有出口和动作连接都已经建立起来了。
https://stackoverflow.com/questions/11838050
复制相似问题