首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSArrayController -观察selectionIndex

NSArrayController -观察selectionIndex
EN

Stack Overflow用户
提问于 2012-08-07 09:15:10
回答 1查看 948关注 0票数 0

当我尝试设置对此特定键的观察时,什么也没有发生。这就是我的意思。

我有一个带有NSTableView的标准Cocoa应用程序,并且我知道如何根据所选的单元格来更改图像视图中显示的图像。

现在,我正在尝试找出如何根据所选的索引禁用/启用按钮。我的意思是,我在窗口中有一个按钮,它在某些索引上是禁用的。

SomeClass的init方法

代码语言:javascript
复制
-(id)init {
    if (self=[super init]) {
        [arrayController addObserver:self forKeyPath:@"selectionIndex" options:NSKeyValueObservingOptionNew context:NULL];
    }
}

但是,当我实现observeValueForKeyPath:方法时,当我选择新索引时,更改不会被提取。事实上,如果我尝试记录它,插座会显示(空)。但是,当我在AppDelegate中添加观察者时,AppDelegate (当被指定为观察者时)获取更改。

是不是有什么原因导致我的通用SomeClass对象不能呢?应该以不同的方式来做吗?

注意:

我尝试将SomeClass子类化为NSWindow,然后将窗口的所有者设置为SomeClass,并在awakeFromNib中设置观察者,这很有效,但似乎不是一个好方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-07 10:39:20

init方法在这个过程中发生得太早了,在插座连接之前(我认为)。将代码放入awakeFromNib中即可正常工作。这是来自苹果文档中的NSObject类引用:

nib加载基础结构向从nib归档重新创建的每个对象发送awakeFromNib消息,但前提是归档中的所有对象都已加载和初始化。当一个对象收到一条awakeFromNib消息时,保证它的所有出口和动作连接都已经建立起来了。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11838050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档