我正在开发一个仅包含菜单栏图标的 macOS 应用程序。
我有一个带有菜单的 xib 文件(MenuBarMenu.xib)和一个相应的控制器(MenuBarMenuController.swift),它把它放在菜单栏中。
我想手动或使用 Swinject 在此控制器中注入依赖项。
所以要做到这一点,我想我可以从 AppDelegate 以编程方式加载 xib 文件:
func applicationDidFinishLaunching(_ aNotification: Notification) {
let controller = MenuBarMenuController(nibName: "MenuBarMenu", bundle: nil)
controller.someDependency = Test()
}
但看起来控制器在到达 applicationDidFinishLaunching 之前由 NSApplication 自动实例化。
我试过的:
- 从 info.plist 中删除 NSMainNibFile
- 从 info.plist 中删除 NSMainStoryboardFile
- 清除项目设置中的主界面设置
- 添加了 LSUIElement = 是
- 使用自定义 main.swift确保调用了我的 AppDelegate。
如果存在 xib 文件,则在 AppDelegate 之前调用它。当我删除它时,没有运行时错误。
我的问题是:如何在此控制器中注入依赖项?