Help us understand the problem. What is going on with this article?

メニュー(NSMenu, NSMenuItem)のまとめ

More than 5 years have passed since last update.

随時、更新予定

メニューの追加とハンドリング

メニューの追加とハンドラの実装までは以下のような手順で行う。

  • MainMenu.xib を開き、Menu Item または Submenu Item を追加。
  • First Responder を選択し、Attributes inspector で応答するアクションを定義。
  • メニューとアクションを接続。(メニューを Control+ドラッグし、First Responder でドロップ)
  • 応答したい場所でアクションメソッドを実装。

Cocoa は nil ターゲットアクション という仕組みにより、 レスポンダ・チェーン を辿ってアクションに応答できるオブジェクトを探し、メソッドを呼び出してくれる。
ドキュメントベースのアプリケーションは通常、メニューを定義する MainMenu.xib とドキュメントウィンドウを定義する Document.xib が分離している。
ドキュメントクラスにメニューに対する応答を実装したい場合は、この仕組みを利用してメニューハンドラを実装する。

MainMenu.xib にメニュー UI とアクションを定義

ss.png

Document.m にアクションハンドラを実装

Document.m
- (IBAction)insertRectShape:(id)sender
{
    ...
}

参考文献

MAC OS X COCOA プログラミング(原著第 4 版) P.361 "nil ターゲットアクション"

imk2o
モバイルアプリのエンジニアをやっております。 iOSアプリを出してます。 https://itunes.apple.com/jp/developer/yuichi-kobayashi/id936205746
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away