macOS のメニューから Swift の関数を呼ぶ方法を説明します。
Sponsor Link
環境&対象
以下の環境で動作確認を行なっています。
- 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 の関数を接続する
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
Sponsor Link