Итак, я внедрил источник данных PXSourceList
, который в значительной степени является дубликатом примера Apple источника данных NSOutlineView
.Динамический источник данных 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
...
Может кто-нибудь любезно помочь мне?
Вы заметили '- (BOOL) outlineView: (NSOutlineView *) outlineView isGroupItem: (ID) item' в' NSOutlineViewDelegate'? – JDS
Я рассмотрю его, спасибо. – Souljacker