创建NSMenuItem的动态计数

时间:2011-11-20 10:39:51

标签: objective-c dynamic add nsmenuitem nsmenu

我目前正在努力使用Mac OS X中的动态UI。 我创建了一个菜单栏项,并希望在其中添加动态的MenuItem计数。

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

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

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

然后我想更新元素的标题:

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

原因是,“click”动作返回未声明的标识符(menuItem)。 问题是,我不能在头文件中声明它们,因为它们是动态的,它们可能达到100个项目的数量,因此我不能声明10个项目并使用它们。

我该如何处理这些情况? 希望,你能帮助我!

电贺, 儒略

1 个答案:

答案 0 :(得分: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个项目,并为它们提供不同的标记。干杯!