4

我目前正在为 Mac OS X 中的动态 UI 苦苦挣扎。我创建了一个菜单栏项,并希望在其中添加一个动态的 MenuItems 计数。

元素的数量取决于计算机上的网络接口。我的 Mac 有两个接口,另一个可能只有一三个。

元素的创建不是问题。但我想在后面的代码中引用这些元素。

-(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 回答