所以我实现了一个PXSourceList
数据源,几乎与Apple的NSOutlineView
数据源示例重复。
这是怎么回事......
- (NSUInteger)sourceList:(PXSourceList*)sourceList numberOfChildrenOfItem:(id)item; {
if (item == nil) {
// item is nil so it's part of the very top hierarchy.
// return how many sections we need.
return 2;
}
else {
if ([item class] == [TSFileSystemItem class] ) {
return [item numberOfChildren];
// if item isn't nil and it's a TSFileSystemItem, then return it's children.
}
if ([item class] == [TSWorkspaceItem class]) {
return 2; // i don't know, random items.
}
else {
NSLog(@"this is a special object.");
}
}
}
- (BOOL)sourceList:(PXSourceList *)aSourceList isItemExpandable:(id)item {
if (item == nil) {
return YES;
}
else {
// if the number of children of the item is -1
BOOL gibberhook = ([item numberOfChildren] != -1);
return gibberhook;
}
}
-(id)sourceList:(PXSourceList *)aSourceList child:(NSUInteger)index ofItem:(id)item {
if (item == nil) {
return [TSFileSystemItem rootItem];
}
else {
return [(TSFileSystemItem *)item childAtIndex:index];
}
}
- (id)sourceList:(PXSourceList *)aSourceList objectValueForItem:(id)item {
if (item == nil) {
return @"/";
} else {
if (item == [TSFileSystemItem rootItem]) {
return PROJECT_FILES;
}
else {
return [item relativePath];
}
}
}
神秘的TSFileSystemItem
来自这里:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/OutlineView/Articles/UsingOutlineDataSource.html。
所有这一切都没问题,但我想将源列表分成多个部分(根单元格)。一个显示文件层次结构(检查),另一个显示...
那么另一个将包含我从其他部分添加项目的NSMutableArray
。听起来很复杂?更好的解释。单击带有文件层次结构的部分中的项目,然后将其添加到其他部分。
我试图在Apple的文档的帮助下解决这个问题,但我仍然找不到一个简单,有效,稳定的方法,用上面提到的函数制作2个部分。如果只是为UITableView
...
有人可以帮助我吗?
答案 0 :(得分:0)
当调用childrenForItem委托方法并且项目为nil时,它会请求树的根。如果返回并且数组,那么树将为该数组中的每个元素提供一个根节点。
- (NSArray *)childrenForItem:(id)item {
if (item == nil) {
return [self.rootTreeNode childNodes];
} else {
return [item childNodes];
}
}