У меня есть приложение Mac OS X, которое использует NSOutlineView с двумя столбцами: ключ и значение, где вы можете редактировать столбец значения. У меня либо есть NSString, либо NSDictionary подряд. Код значения ячеек выглядит следующим образом:
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
if ([[[tableColumn headerCell] stringValue] isEqualToString:@"Key"]) {
id parentItem = [outlineView parentForItem:item] ? [outlineView parentForItem:item] : root;
return [[parentItem allKeysForObject:item] objectAtIndex:0];
} else {
if ([item isKindOfClass:[NSString class]]) {
return item;
} else if ([item isKindOfClass:[NSDictionary class]]) {
return @"";
} else {
return nil;
}
}
}
Он работает так, как должен, за исключением случаев, когда значения полей имеют одно и то же строковое значение. В качестве ключа всегда отображается первый элемент с этим значением, поэтому одно и то же значение ключа будет отображаться для всех одинаковых значений значений. Кто-нибудь знает, как решить эту проблему?