メニューで "Application" を選択した時にその時点でのアプリケーション一覧をメニューに表示する。
これを実現するには "Application" が選択された時のイベントを捉える必要がある。これは NSMenuの Delegateを使えば簡単にできる。
IBOutlet NSMenu *_app_menu
として、IntefaceBuilderで "Application"の NSMenuへ接続し、コントローラーの中で NSMenu#setDelegate を呼出す。
[_app_menu setDelegate:self]
すると下記の Delegate 先に下記のメッセージが送信される。
menu:updateItem:atIndex:shouldCancel:
menu:willHighlightItem:
menuDidClose:
menuHasKeyEquivalent:forEvent:target:action:
menuNeedsUpdate:
menuWillOpen:
numberOfItemsInMenu:
今回は #menuWillOpen: を使う。こんな感じ。
- (void)menuWillOpen:(NSMenu *)menu
{
// メニュー更新コード(この時点で起動しているアプリの一覧で NSMenuItem作成)
}