Мне нужно загрузить список файлов из директории. Для этого я использую метод beginSheetModalForWindow:completionHandler: , затем выбираю директорию и нажимаю OK. В моем случае после OK вызывается метод addToList: который условно загружает файлы и панель NSOpenPanel не закрывается до тех пор пока метод addToList: не закончить свою работу. Если нужно вызвать sheet с NSProgressIndicator который показывает статус загрузки файлов то он всплывает поверх NSOpenPanel. Мне это многообразие sheet'ов не нравится и я решил этот вопрос вызовом метода close для NSOpenPanel перед вызовом sheet с прогрессом.
Например:
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel beginSheetModalForWindow:window completionHandler:^(NSInteger result) {
if (result == NSOKButton) {
[panel close]; //<--- Закрываю sheet c NSOpenPanel
[NSApp beginSheet:progressSheet modalForWindow:window modalDelegate:nil
didEndSelector:nil contextInfo:nil]; //<--- Открываю sheet c индикатором прогресса
[self addToList:panel.URL]; // <--- загружаю файлы
[progressSheet orderOut:self]; //
[NSApp endSheet:progressSheet]; //<--- Закрываю sheet c индикатором прогресса
}
}];
Является ли мое решение с вызовом [panel close] правильным выбором. И как подобные веши реализовываете Вы?
Всех зарание благодарю.