Привязки делают это действительно легко.
Вы можете использовать NSTreeController в сочетании с NSOutlineView и очень небольшим кодом, если вы используете стандартные привязки.
Чтобы заставить объекты NSXML в примере приложения работать вместе с объектом NSTreeController, вам просто нужно добавить пару методов в класс NSXMLNode через категорию.
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/NSXML_Concepts/Articles/UsingTreeControllers.html
#import "NSXMLNode+NSXMLNodeAdditions.h"
@implementation NSXMLNode (NSXMLNodeAdditions)
- (NSString *)displayName {
NSString *displayName = [self name];
if (!displayName) {
displayName = [self stringValue];
}
return displayName;
}
- (BOOL)isLeaf {
return [self kind] == NSXMLTextKind ? YES : NO;
}
@end
вот скриншоты соответствующих настроек для обоих NSTreeContoller
и TableColumn NSOutlineView