我目前正在努力使用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个项目并使用它们。
我该如何处理这些情况? 希望,你能帮助我!
电贺, 儒略
答案 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个项目,并为它们提供不同的标记。干杯!