Как вы ограничиваете управление окнами macOS от восстановления определенного окна?
У меня есть приложение, в котором есть несколько окон, определенных как группа окон в структуре, соответствующей приложению в основной сцене:
WindowGroup("StandingsView") {
StandingsView()
.environmentObject(appServices)
}
.handlesExternalEvents(matching: Set(arrayLiteral: "StandingsView"))
Для настройки appServices требуется некоторое время, поэтому я не хочу автоматически восстанавливать окна при запуске. Я создаю окна после того, как выбор пользователя действителен, службы полностью настроены и пользователь нажимает кнопку «Пуск» SwiftUI:
if let standingsURL = URL(string: "raceStratLiteApp://StandingsView") {
NSWorkspace.shared.open(standingsURL)
}
Я пытался закрыть окна в appDelegate applicationShouldTerminate(). Я также попытался установить для isRestorable значение false в applicationShouldTerminate:
func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply {
for window in NSApplication.shared.windows {
window.isRestorable = false
}
return .terminateNow
}
Есть ли другие способы не восстанавливать окно? или еще лучше, чтобы иметь возможность программно восстановить его с предыдущим размером и т. д., но запускать только по указанию пользователя для «запуска»
ТИА
2 ответа
Решение кода, как предлагает @Asperi в более позднем комментарии:
func applicationDidFinishLaunching(_ notification: Notification) {
UserDefaults.standard.register(defaults: ["NSQuitAlwaysKeepsWindows" : false])
}
Из подсказки, предоставленной @Asperi, запись следующего в значения по умолчанию прекратит запись состояний окна:
$ defaults write <bundleid> NSQuitAlwaysKeepsWindows -bool false
Так что это не изменение кода приложения, а скорее конфигурация среды, которая будет выполняться при установке.
Я также удалил каталог saveState, расположенный по адресу