6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

随時、更新予定

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

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

  • 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 ターゲットアクション"

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?