Расширение всех объектов NSOutlineView, который загружает данные из источника данных

В первую очередь, я плохо знаком с разработкой какао, таким образом, я предполагаю, что, вероятно, пытаюсь сделать это неправильный путь, но здесь иду:

У меня есть a NSOutlineView который загружает данные из a NSOutlineViewDataSource реализация. Я хочу, чтобы все объекты были расширены после того, как они загружаются, но я, может казаться, не нахожу событие запущенным, когда данные закончили загружаться, таким образом, я могу отправить a [outlineView expandItem: nil expandChildren: YES] к нему.

Я изучил NSOutlineViewDelegate протокол, но я не мог найти подходящее место для этого вызова. Каков был бы лучший подход для этой проблемы?

5
задан egor.zhdan 11 July 2016 в 20:46
поделиться

2 ответа

Я нашел ответ. Похоже, что реализация метода делегата - (void) outlineView: (NSOutlineView *) OutlineView willDisplayCell: (id) cell forTableColumn: (NSTableColumn *) tableColumn item: (id) item будет делать трюк:


-(void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item
{
    [outlineView expandItem:item];
}
2
ответ дан 18 December 2019 в 13:12
поделиться

Вот как я обычно с этим справляюсь. Я предпочитаю показывать свое главное окно самому, а не позволять этому открываться автоматически. Это позволяет мне убедиться, что все элементы интерфейса настроены так, как я хочу, прежде чем я покажу пользователю окно. Кажется, ты тоже можешь это сделать. Итак, сначала я снимаю флажок «Видимо при запуске» в построителе интерфейса для окна. Затем в классе делегата моего приложения я использую этот метод, который является методом удаления NSApplication:

  • (void) applicationDidFinishLaunching: (NSNotification *) aNotification

Там я настраиваю элементы интерфейса, потому что в этот момент я знаю, что все загружено . И последняя строка этого метода будет: [myWindow makeKeyAndOrderFront: self] ;. Таким образом, вы знаете, что ваше окно идеально, еще до того, как пользователь увидит его. Так что я бы попробовал ваш метод там.

1
ответ дан 18 December 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: