【发布时间】:2009-12-30 15:09:34
【问题描述】:
我有一个 NSTreeController,它的数组绑定到 NSArrayController 子类的“items”(自定义)属性。 由于树控制器未绑定到 NSArrayController 的选择,我需要确保让树控制器知道在数组控制器的选择更改后必须获取项目。
我在 NSArrayController 的子类中做了以下操作:
+ (NSSet *)keyPathsForValuesAffectingItems
{
return [NSSet setWithObjects:@"selectedObjects",nil];
}
这应该足够了。类方法被调用,但似乎没有任何效果。
如果我为selectedObjects 实现观察者,它可以正常工作:
- (void)awakeFromNib;
{
[self addObserver:self forKeyPath:@"selectedObjects" options:0 context:nil];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(NSObjectController *)context;
{
if ([keyPath isEqual:@"selectedObjects"]) {
[self willChangeValueForKey:@"items"];
[self didChangeValueForKey:@"items"];
}
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
有什么线索吗?
【问题讨论】:
标签: cocoa key-value-observing nstreecontroller