创建动态计数的NSMenuItems

4

我目前在处理Mac OS X中的动态UI方面有些困难。

我创建了一个菜单栏项,并希望在其中添加动态计数的菜单项。

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

元素的创建不是问题,但我希望在以后的代码中引用这些元素。

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

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

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

当然,“click”操作返回一个未声明的标识符(menuItem)。 问题在于,我无法在头文件中声明它们,因为它们是动态的,可能会达到100个项目,因此我不能声明10个项目并使用它们或不使用它们。 如何应对这些情况? 希望您能帮助我! 问候, 朱利安
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个项目并给它们分配不同的标签即可。干杯!


嘿!谢谢回复!我通过将元素添加到菜单中,然后从菜单中读取所有元素并将它们传递到for()循环中解决了我的问题。 - Julian F. Weinert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接