ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

ホーム > コミュニティ > PC、インターネット > Xcode/InterfaceBuilder > トピック一覧 > Cocoaでウィンドウ毎のメニ...

Xcode/InterfaceBuilderコミュのCocoaでウィンドウ毎のメニューアイテム

  • mixiチェック
  • このエントリーをはてなブックマークに追加

コミュ内全体

CocoaのObjective-Cの質問です。
MDIで複数のウィンドウを開いた時、それぞれ同じメニューになります。
その内1つAnimationメニューがあり、ウィンドウごとにそのメニューアイテムを別々にしたいです。
ウィンドウ毎にメニューアイテムを変えるにはどうすればいいでしょうか?

コメント(27)

そのAnimationメニューにNSMenuDelegateを設定して、menuNeedsUpdate:を実装するか、numberOfItemsInMenu:とmenu:updateItem:atIndex:shouldCancel:を実装してください。
>>[1]、ありがとうございます。
今出先なので、後で試してみます。
>>[1]

AnimationメニューにNSMenuDelegateを設定するには、具体的にどうコーディングすればいいのでしょうか?
>>[3]
NSMenuのdelegateプロパティを設定するだけです。
これはInterfaceBuilderで出来るので、実質的にコーディング不要です。
>>[4]、ありがとうございます。

InterfaceBuilderで、NSMenuのdelegateプロパティを設定するにはどうすればいいのでしょうか?
>>[5]
Outletの接続の仕方ぐらい知っていますよね?
Xcodeを使うのが初めてという訳でもないのだし?
>>[6]、ありがとうございます。

Animation下のMenuをcontrol+ドラッグして、Animationに持って行ったらOutletにdelegateをチェックすればいいのですか?
そうすれば、menuNeedsUpdate:をViewControllerに実装すればいいのですか?
>>[7]
Document-BaseなApplicationなんですよね?
その場合、ViewControllerをdelegateに設定できないはずです。
MenuがあるnibにNSMenuDelegateなオブジェクトを追加するか、AppDelegateを流用してください。
>>[8]、ありがとうございます。
Document-Baseかはわかりません。Cocoaをデフォルト設定です。
NSDocumentはありません。
>>[9]
へ?
「MDIで複数のウィンドウを開いた時」というのは、どういう意味ですか?
>>[10]、ありがとうございます。
MultiDocumentInterfaceのつもりでした。
File→Newメニューをcontrol+ドラッグでWindowを開くように設定しています。
>>[11]
いずれにせよ、複数存在するViewControllerをNSMenuDelegateにすることはできません。
>>[12]、ありがとうございます。
Document-Baseにすれば良いのですね?
>>[13]
今はMenuの話をしていたはずでしょ?
Document-Baseであるかどうかは問題ではありません。
>>[14]、ありがとうございます。
ではどうすればいいでしょうか?
わけがわからなくなってきました…。
>>[15]
結局のところ、Animationメニューのdelegateは設定できたんですか?
>>[16]
添付画像通りにはできました。
App delegateに繋いだので、AppDelegate.mで何かするのでしょうか?
>>[17]
最初に説明したとおり、menuNeedsUpdate:を実装するか、numberOfItemsInMenu:とmenu:updateItem:atIndex:shouldCancel:を実装して、メニューを動的に構築してください。
>>[18]、ありがとうございます。
どのファイルでもインテリセンスの候補に出ません。
どうやって実装出来ますか?
>>[19]
NSMenuDelegateプロトコルを実装にしましたか?
>>[20]、ありがとうございます。
それはどうやればいいのでしょうか?
>>[21]
Objective-Cのプロトコルの使い方ぐらい知ってますよね?
>>[22]、ありがとうございます。
サンプルを改造して作ってるだけで、用語はほとんどわかりません。
基本的なことでしょうが、教えてください。
>>[23]
Objective-Cのprotocolは、Javaのinterfaceと同じです。
っていうか、プログラミング言語がまだ分からないレベルならアプリケーション作るのは無理だと思います。
>>[24]、ありがとうございます。
AppDelegate.mで、NSMenuItemをmenuにaddItemできました。
でも、ウインドウごとのViewControllerにアクセスするにはどうすればいいでしょうか?
>>[25]
NSApplicationのmainWindowからviewControllerを参照できます。
>>[26]、ありがとうございます。
ちょっと迷ったのですが、
ViewController* view=[[[NSApplication sharedApplication] mainWindow] contentViewController]
でいいんですね?

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Xcode/InterfaceBuilder 更新情報

Xcode/InterfaceBuilderのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。