我正在尝试让 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 而不是依赖委托的-tableViewSelectionDidChange:
方法的原因是我想要以前和当前的值selectedRowIndexes
,而不是仅仅能够获得当前的选择。如果有办法在这个属性上没有 KVO 的情况下做到这一点,我会全力以赴。