首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSTreeController KVO问题

NSTreeController KVO问题
EN

Stack Overflow用户
提问于 2009-12-30 23:09:35
回答 1查看 715关注 0票数 0

我有一个NSTreeController,它的数组绑定到NSArrayController子类的"items“(自定义)属性。由于树控制器没有绑定到对NSArrayController的选择,因此我需要确保让树控制器知道在对数组控制器的选择更改后必须获取项。

我在NSArrayController的一个子类中完成了以下操作:

代码语言:javascript
复制
+ (NSSet *)keyPathsForValuesAffectingItems
{
    return [NSSet setWithObjects:@"selectedObjects",nil];
}

这应该就足够了。类方法被调用,但似乎没有任何效果。

如果我为selectedObjects实现一个观察者,它可以很好地工作:

代码语言:javascript
复制
- (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];
}

有什么线索吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-30 23:16:47

首先,"items“不是NSArrayController的可观察属性。您的意思是它是数组控制器为其管理集合的类的属性吗?也就是说,它管理一个Foo数组,而Foo有一个属性"items"?

在任何情况下,您都会让这件事变得比需要的更难。为什么不直接将树控制器的内容绑定到数组控制器的selection.items路径呢?在少数情况下,这是不可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1980641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档