目次

目次

OS Xのメニューバーを実装してみました。

アバター画像
柳 秀明
アバター画像
柳 秀明
最終更新日2017/09/21 投稿日2017/09/21

実装方法

新規にプロジェクトを作った状態でMain.Storyboardを開くと 以下のようなオブジェクトが既に存在しているので、 必要に応じてメニューの追加と削除をすればOKです。

init0.png

初期動作を確認する

新規にプロジェクトを作った状態でビルド後、 アプリを選択状態にすることで以下のように選択しているアプリのメニューが表示されます。

init1.png

初期状態ではメニューを押しても中身を実装していないのでほとんどが動かないのですが、 一部最初から自動的に実装されているところもあるようです。

例えば「About アプリ名」は最初から実装されており、以下のように表示されます。

init2.png

メニューを追加する

以下の場所に「Menu Item」をドラッグ&ドロップすれば、 メニュー項目が追加されます。

menu1.png

ビルドして以下のように追加されていれば成功です。

menu2.png

メニュー選択時の動作を追加する

まず初めにメニューのクラスを作成します。 「File」ー>「New」ー>「File」でテンプレートを選択する画面を表示します。 macOSタブのSource「Cocoa Class」を選択後、「Next」ボタンを押して、 任意のClass名を入力後、Subclassは「NSObject」を選択して「Next」ボタンを押します。 あとはファイルの置き場所を指定して「Create」ボタンを押して作成すれば準備完了です。

次に作成したクラスをStoryboardと紐付けます。 以下の青ボタン部分を選択して任意のクラス名に変更することでクラスとStorybordを紐付けてイベントを取得できるようになります。

add1.png

あとはボタンと同じ方法でメニューを押した時の動作を設定します。

add2.png

確認のためボタンを押した時にログを出力するように追加します。

    @IBAction func itemAction(_ sender: NSMenuItem) {
        print("追加したメニューを押しました。")
    }

結果

こんな感じでメニューを押した時にログが出れば成功です。

result.png

感想

iOSアプリには存在しないメニューバーですが、 以外と簡単に実装が出来ました。

ググるとコードを書いて実装している例もあったんですが、 iOSアプリ開発と同様にパフォーマンスに影響がない場合は、 基本的にStoryboard上で実装した方がシンプルに作れますね!

アバター画像

柳 秀明

目次