0

メニューバーのアイコンのみで構成される 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 によって自動的にインスタンス化されているようです。

私が試したこと:

  1. info.plist から NSMainNibFile を削除しました
  2. info.plist から NSMainStoryboardFile を削除しました
  3. プロジェクト設定のメインインターフェイス設定をクリア
  4. 追加された LSUIElement = はい
  5. カスタム main.swiftを使用して、AppDelegate が確実に呼び出されるようにしました。

xib ファイルが存在する場合は、AppDelegate の前に呼び出されます。削除すると、実行時エラーは発生しません。

私の質問は、このコントローラーに依存関係を挿入するにはどうすればよいですか?

4

1 に答える 1