1

NSMenu(アプリケーション ドック メニュー) と、同じアクションを持ついくつかの項目があります。

コンテナ メニュー内のセンダー アイテム (アクションをトリガーするアイテム) のインデックスを確認するにはどうすればよいですか? title(重複している可能性があるため、 には興味がありません)

それが私が試したことですが、それは0(ゼロ)を返し続けます。

- (void)myAction:(id)sender
{
    NSMenuItem* mi = (NSMenuItem*)sender;

    int index = [[[mi parentItem] submenu] indexOfItem:mi];

    NSLog(@"Clicked item with index : %d",index);
}

何か案は?(まったく同じことを達成するためのより良いアプローチはありますか?)

4

1 に答える 1

4

メニュー項目を使用してrepresentedObject、アプリ内のオブジェクトへの参照を保存できます。あなたの場合、おそらくメニュー項目が参照するドキュメントを使用するでしょう:

[aMenuItem setRepresentedObject:yourDocument];

次に、次のようにアクションでオブジェクトにアクセスできます。

- (void)myAction:(id)sender
{
    NSMenuItem* mi = (NSMenuItem*)sender;
    YourDocument* doc = (YourDocument*)[sender representedObject];
    //do something with doc
}
于 2012-04-19T08:16:12.250 に答える