[macOS] macOS アプリのメニューから Swift の関数をコールする設定

macOS のメニューから Swift の関数を呼ぶ方法を説明します。

環境&対象

以下の環境で動作確認を行なっています。

  • macOS Big Sur 11.1
  • Xcode 12.3

背景

SwiftUI に慣れてきて、Storyboard を触らなくなると、メニューとの 接続方法 も忘れてしまいがちなので、メモしておきます

macOS のメニューから Swift の関数を呼ぶ方法

以下の例では、"AppDelegate に実装したメソッド" を メニュー選択時に呼び出す という設定を行います。

2つのステップがあります。

Swift での関数定義

以下のように、メソッドに "@IBAction" を設定して定義します。

AppDelegate#showAboutnWindow

extension AppDelegate {
    @IBAction
    public func showAboutWindow(_ sender:AnyObject) {
        print("appDelegate.showAboutnWindow is called")
    }
}

@IBAction は、引数を要求しますので そのように定義します。

通常は、呼び出す時に使用されたオブジェクト(例えばボタン)が渡されてきます。

Xcode 上では、@IBAction という Attribute を指定することにより、エディタ上で メソッド名の左に小さな丸が表示されるようになります。

この丸を storyboard 上で 接続したいメニューと接続する作業へと続きます。

Storyboard 上での設定

Stroryboard と Swift のコードを並べて表示して、接続します。

これだけです。

この設定をすることで、”About ExifClip2" という メニューを選択すると、接続されたメソッドが呼ばれます。

まとめ:メニューから Swift の関数を呼ぶ方法

メニューから Swift の関数を呼ぶ方法
  • Swift 側で、@IBAction 指定して定義する
  • Storyboard で メニューと Swift の関数を接続する

説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です