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

异构NSTreeController
EN

Stack Overflow用户
提问于 2010-04-03 00:34:09
回答 2查看 486关注 0票数 2

我有一个NSTreeController (向NSOutlineView提供内容)。我希望顶级对象属于一个类,而所有其他对象(因此,任何级别的子对象)都属于另一个类。做这件事最好的方法是什么?

我想我至少需要以某种方式改变addaddChildinsertinsertChild的行为。不过,我希望找到一种简单的方法,只在一个地方解决这个问题,而不是改变四个不同的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-06 03:57:18

这起作用了,我不需要重写任何功能:

代码语言:javascript
复制
- (void)insertChild:(id)sender
{
    if ([self selectionIndexPath])
    {
        [self setObjectClass:[IRGroup class]];
        [super insertChild:sender];
    }
    else
    {
        [self setObjectClass:[IRFloor class]];
        [super insertChild:sender];
    }
}

这并不容易;我尝试了重写newObject,因为苹果的文档声称在插入兄弟和子对象时会调用它,但我的测试显示只有在插入兄弟对象时才会调用它。

票数 0
EN

Stack Overflow用户

发布于 2010-04-03 07:35:34

在我看来,你可以在你的对象中创建一个属性来区分哪些对象应该使用你修改过的方法,哪些不应该使用,然后只需在子类化的方法中使用一个简单的if语句来测试这个属性。如果你的对象没有这个属性,那么就让超类树控制器来处理它,否则就会改变你的行为。

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

https://stackoverflow.com/questions/2567821

复制
相关文章

相似问题

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