Заставка Xcode macos swift: таблица конфигурации не отображается при первом нажатии - PullRequest
2 голосов
/ 24 февраля 2020

Я пытаюсь создать экранную заставку 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
        }

У кого-нибудь есть идея, почему первый щелчок кнопки опций приводит к этому исключению и как я могу это исправить, чтобы он заработал в первый раз?

...