2012-03-24 14 views
0

せずに、私はここのコードで、Main MenuからNSMenuItemを取得しています:Getting NSMenuItem of NSMenu tree by title設定タイトル、効果

はしかし、奇妙な何かが起こる:アクションに接続

  • NSMenuItemを:とき送信者 プロパティ(NSMenuItem)を使用してタイトルを設定すると、となります。
  • しかし:上記の機能を持つアイテムを取得し、タイトルを設定し、 NSMenuItemのタイトルは、変更を行いますが、変更は、それが属するメニューに反映されていない です。

私は間違っていますか?私はタイトルコードでNSMenuツリーのNSMenuItemを取得 を忘れて、ちょうどIBで各メニューを接続します

NSMenuItem* mi = [[core mainMenu] getItemWithPath:@"View" tag:PP_MENU_TAG_STATUSBAR]; 
[mi setTitle:@"newTitle"]; 
NSLog(@"mi : %@",[mi title]); 

// mi changes, but no changes take effect in the mainMenu 

答えて

1

(私は...この1つは本当に愚かであると確信しています)。でも、私のテスト1は!!働いていなかった理由を次に

UPDATE *

を必要なときにのsetTitleを使う(コメントを参照) それは把握してしばらくかかりました。私はIBの中に帰属するタイトルを入れました。

enter image description here

だから私は後でのsetTitleを使用する場合。プロパティは設定されていましたが、実際に表示されたメニューは帰属するタイトルによって上書きされました。

IBから帰属するタイトルを削除する。これを修正しました。 setTitleは期待どおりに動作します。

また、以前は帰属名を使用したことがありません。そして、私はちょうど、IBの帰属するタイトルの色付きテキストを貼り付けました。メニュー項目は色とフォントが同じでした。

私はいつもできるようにしたいと思っていましたが、考えられませんでした。

これをプログラムで実行するのは簡単です。

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:@"newTestMenu"]; 
    [string addAttribute:NSForegroundColorAttributeName value:[NSColor redColor] range:NSMakeRange(0,string.length)]; 

    [_testMenu setAttributedTitle:string]; 
+0

これはうまくいきました。しかし、上記はどうですか?私は間違って何をしていますか? –

+0

タグは何ですか:PP_MENU_TAG_STATUSBAR]部分ですか?あなたはメソッド名にそれを持っていません! – markhunte

+0

まあ、大丈夫...私はそれを認める - ある特定のサブサブケースのために、私はメニュー項目の1つのためのタグを宣言しなければならなかった...私は適切な関数( 'getItemWithPath:tag:' - +他のものと同じ)+ 'PP_MENU_TAG_STATUSBAR'(= 1)を定義する)。パフ...本当に複雑すぎる...私はあなたのやり方をしなければならないと思った... –

関連する問題