我有一个NSTreeController (向NSOutlineView提供内容)。我希望顶级对象属于一个类,而所有其他对象(因此,任何级别的子对象)都属于另一个类。做这件事最好的方法是什么?
我想我至少需要以某种方式改变add、addChild、insert和insertChild的行为。不过,我希望找到一种简单的方法,只在一个地方解决这个问题,而不是改变四个不同的方法。
发布于 2010-04-06 03:57:18
这起作用了,我不需要重写任何功能:
- (void)insertChild:(id)sender
{
if ([self selectionIndexPath])
{
[self setObjectClass:[IRGroup class]];
[super insertChild:sender];
}
else
{
[self setObjectClass:[IRFloor class]];
[super insertChild:sender];
}
}这并不容易;我尝试了重写newObject,因为苹果的文档声称在插入兄弟和子对象时会调用它,但我的测试显示只有在插入兄弟对象时才会调用它。
发布于 2010-04-03 07:35:34
在我看来,你可以在你的对象中创建一个属性来区分哪些对象应该使用你修改过的方法,哪些不应该使用,然后只需在子类化的方法中使用一个简单的if语句来测试这个属性。如果你的对象没有这个属性,那么就让超类树控制器来处理它,否则就会改变你的行为。
https://stackoverflow.com/questions/2567821
复制相似问题