Я пытаюсь создать экранную заставку swift macOS с таблицей конфигурации, загружающей страницу параметров xib. К сожалению, страница параметров отображается только после двойного нажатия кнопки «Параметры экранной заставки ...». При первом нажатии кнопки консольное приложение показывает:
-[LegacyExtensionManager exceptionHandler:shouldHandleException:mask:] -- Module: ScreenSaverS threw an uncaught exception: NSInternalInconsistencyException, reason: cannot begin sheet a second time.
-[LegacyExtensionManager processExtensionRequest:replyInfo:]_block_invoke -- Module: ScreenSaverS (ScreenSaverS) failed to display a configuration sheet. Exception: NSInternalInconsistencyException, reason: cannot begin sheet a second time
После этого кажется, что внутренняя страница параметров удаляется, а второй раз - при нажатии кнопки параметров мой загрузчик xib, а также полная страница параметров. действия работают правильно. Вот моя перегрузка configurationSheet:
override var configureSheet: NSWindow?
{
NSLog("ScreenSaverS:configureSheet self=%p", self);
if (configSheet == nil)
{
let tmpBundle = Bundle(for: type(of: self));
if (tmpBundle.loadNibNamed("ConfigView", owner: self, topLevelObjects: nil) == false)
{
NSLog("ScreenSaverS:configureSheet load config sheet failed");
} else {
NSLog("ScreenSaverS:configureSheet config sheet loaded configSheet=%p", configSheet);
}
} else {
NSLog("ScreenSaverS:configureSheet self=%p already created", self);
}
return configSheet
}
У кого-нибудь есть идея, почему первый щелчок кнопки опций приводит к этому исключению и как я могу это исправить, чтобы он заработал в первый раз?