4

現在、Mac OS Xで動的UIに苦労しています。メニューバーアイテムを作成し、その中にメニューアイテムの動的カウントを追加したいと思います。

要素の数は、コンピューターのネットワークインターフェイスによって異なります。私のMacには2つのインターフェースがあり、別のMacにはたぶん1つか3つしかありません。

要素の作成は問題ではありません。しかし、後のコードで要素を参照したいと思います。

-(void)addItems
{
    NSMenuItem *menuItem = [menu addItemWithTitle:@"Start" action:@selector(click:) keyEquivalent:@""];
}

次に、要素のタイトルを更新します。

-(IBAction)click:(id)sender
{
    [menuItem setTitle:@"Clicked!"];
}

原因として、「クリック」アクションは宣言されていない識別子(menuItem)を返します。問題は、ヘッダーファイルで宣言できないことです。これは、動的であり、おそらく100アイテムに達する可能性があるため、10アイテムのように宣言して使用することができないためです。

これらの状況にどのように対処しますか?願っています、あなたは私を助けることができます!

挨拶、ジュリアン

4

1 に答える 1

5

この問題に遭遇しただけで、それは非常に簡単です。NSMenuItem ポインターを手動で追跡することもできますが、最も簡単な方法はタグを使用することです。メニュー項目を作成するときは、次のようにします。

item = [subMenu addItemWithTitle:@"A1" action:@selector(testing123:) keyEquivalent: @""];
[item setTag:23];

そして、あなたのデリゲートで:

-(IBAction)testing123:(id) sender
{
    NSMenuItem * item = (NSMenuItem*)sender;
    int cmdVal = [item tag];
    printf("Testing123 - %d\n", cmdVal);
}

以上です。10 個のアイテムを追加して、すべてに異なるタグを付けるだけです。乾杯!

于 2011-11-29T09:12:56.020 に答える