Я разрабатываю приложение macOS, которое состоит только из значка строки меню.
У меня есть файл xib (MenuBarMenu.xib) с меню и соответствующий контроллер (MenuBarMenuController.swift), который помещает его в строку меню.
Я хочу внедрить зависимости в этот контроллер, либо вручную, либо с помощью Swinject.
Итак, для этого я подумал, что могу загрузить файл xib программно из AppDelegate:
func applicationDidFinishLaunching(_ aNotification: Notification) {
let controller = MenuBarMenuController(nibName: "MenuBarMenu", bundle: nil)
controller.someDependency = Test()
}
Но похоже, что NSApplication автоматически создает экземпляр контроллера до достижения applicationDidFinishLaunching.
Что я пробовал:
- Удален NSMainNibFile из info.plist
- Удален NSMainStoryboardFile из info.plist
- Сброс настроек основного интерфейса в настройках проекта
- Добавлен LSUIElement = да
- Используется custom main.swift , чтобы убедиться, что мой AppDelegate вызывается.
Если xib-файл существует, он вызывается перед AppDelegate. Когда я его удаляю, ошибок времени выполнения нет.
Мой вопрос: как я могу ввести зависимость в этот контроллер?