Подтвердить что ты не робот

NSOutlineView - автоматическое расширение всех узлов

У меня есть NSOutlineView связанный с NSTreeController (если это имеет значение), и я хотел бы расширять каждый node в моем -awakeFromNib().

Я также хотел бы программно выбрать первый дочерний элемент первого node в одно и то же время. Такие вещи просты с табличными представлениями, но контуры не взаимодействуют со мной вообще.

Спасибо,

Рич

4b9b3361

Ответ 1

Я хотел бы расширить каждый node в моем -awakeFromNib().

Как Mac OS X 10.5, [outlineView expandItem:nil expandChildren:YES].

В предыдущих версиях Mac OS X вам нужно будет перебирать от 0 до количества строк, получая элемент для каждой строки с помощью [outlineView itemAtRow:row] и сохраняя эти элементы в массиве, затем перебираем массив и передаем каждый элемент метода expandItem:expandChildren:. (Вы не можете смешивать две петли, потому что расширение элемента, и все его потомки изменят индексы строк своих последующих братьев и сестер, поэтому сначала необходимо собрать все элементы верхнего уровня, а затем развернуть их, как только у вас есть все они. )

Я также хотел бы программно выбрать первый дочерний элемент первого node в то же время.

Сразу после выше, это будет строка 1.

Контурное представление представляет собой вид таблицы, поэтому вы будете использовать один из методов NSTableView: [outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:1] byExtendingSelection:NO].

Ответ 2

Если вы загружаетесь из источника данных,

dispatch_async(dispatch_get_main_queue(), ^{
  [self.outlineView expandItem:root expandChildren:YES];
});