gpt4 book ai didi

macos - KVO : not receiving notifications on NSTableView's -selectedRowIndexes?

转载 作者:行者123 更新时间:2023-12-03 16:19:40 28 4
gpt4 key购买 nike

我试图让 NSTableView 的自定义子类观察其自己的 -selectedRowIndexes 属性的值,但我无法弄清楚如何正确接收通知。我的子类如下所示(使用 ARC):

@implementation MyTableView

- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
[self addObserver:self forKeyPath:@"selectedRowIndexes" options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context:NULL];
}
return self;
}

- (void)dealloc {
[self removeObserver:self forKeyPath:@"selectedRowIndexes"];
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"change: %@", change);
}

@end

但是,我从未见过 -observeValueForKeyPath:... 被调用。我错过了什么吗?

我也愿意接受更好的解决方案 - 我想要执行 KVO 而不是依赖委托(delegate)的 -tableViewSelectionDidChange: 方法的原因是我想要以前和当前的值selectedRowIndexes,而不仅仅是能够获取当前选择。如果有一种方法可以在没有 KVO 的情况下实现这一点,我会洗耳恭听。

最佳答案

如果您没有看到 KVO 通知,我会在 bugreport.apple.com 上打开雷达。原因可能是它们不完全符合 KVO。我没有测试过,但我不会感到震惊。

至于如何在没有 KVO 的情况下做到这一点,那是相当简单的。使用 tableView:willSelectRowAtIndexPath: tableView:shouldSelectRow:。检查当前值以及要添加的值。返回YES

关于macos - KVO : not receiving notifications on NSTableView's -selectedRowIndexes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12392707/

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