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なしでそれを行う方法がある場合、私はすべて耳にします.