gpt4 book ai didi

objective-c - NSArrayController - 观察选择索引

转载 作者:行者123 更新时间:2023-12-03 17:31:54 26 4
gpt4 key购买 nike

当我尝试设置对此特定键的观察时,没有任何反应。这就是我的意思。

我有一个标准的 Cocoa 应用程序,带有 NSTableView,并且我弄清楚了如何根据所选单元格更改 ImageView 中显示的图像。

现在,我试图弄清楚如何通过所选索引禁用/启用按钮。我的意思是,我在窗口中有一个按钮,该按钮在某些索引上被禁用。

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 中设置观察者,这可行,但似乎是一个不好的方法。

最佳答案

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

The nib-loading infrastructure sends an awakeFromNib message to each object recreated from a nib archive, but only after all the objects in the archive have been loaded and initialized. When an object receives an awakeFromNib message, it is guaranteed to have all its outlet and action connections already established.

关于objective-c - NSArrayController - 观察选择索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11838050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com