Он используется редко, но документация Apple по NSDocument описывает, как настроить NSDocument с несколькими окнами для одного документа.Я работаю над приложением базы данных, которое делает это.Вот пример документа базы данных чековой книжки с двумя открытыми окнами.Каждое окно показывает различный вид документа, в данном случае электронную таблицу, похожую на вид сзади, и диаграмму, обобщающую этот набор данных в переднем окне.В этом примере показаны два окна для одного документа, но пользователь может создать столько окон для каждого документа, сколько ему нужно, каждое из которых отображает один и тот же базовый документ по-своему.

Все работает нормально, за исключением , что, если системный диалоговый лист открывается (Сохранить как, Печать, Настройка страницы), большую часть времени (но не каждые время)диалоговое окно переходит к другому окну и присоединяется к этому окну вместо текущего окна, как показано в этом фильме.

Обратите внимание, что хотя диалоговое окнолист прикрепляется к окну, содержащему диаграмму, он правильно печатает содержимое в окне электронной таблицы.Если я нажму Печать , будет напечатано правильное содержимое.
Для печати все, что делает наш код, это вызывает NSDocument printDocument: метод.
[NSApplication sendActionToFirstResponder:@selector(printDocument:)];
Page Setupкод также просто вызывает NSDocument.
[NSApplication sendActionToFirstResponder:@selector(runPageLayout:)];
Наш код не настраивает ни один из этих диалоговых листов, они полностью готовы.
Для команды Сохранить как тамв нашем приложении вообще нет кода, это появляется автоматически в меню при нажатии клавиши .
Эта проблема появляется во всех версиях macOS, поддерживаемых нашим приложением, начиная с 10.9 и выше.10,13.Возможно, это ошибка AppKit, которую редко можно увидеть из-за того, что несколько окон с одним документом используются так редко?
Эта проблема не приводит к сбою и не мешает пользователю делать то, что он хочет, но этоочень явно некорректно и снижает уверенность пользователя в качестве программы.
Для справки: # 221 в системе отслеживания проблем Panorama X.