Jul*_*ert 4 add dynamic objective-c nsmenu nsmenuitem
我目前正在努力使用Mac OS X中的动态UI.我创建了一个菜单栏项,并希望在其中添加动态计数的MenuItems.
元素的数量取决于计算机上的网络接口.我的Mac有两个接口,另一个可能只有一个或三个.
元素的创建不是问题.但是我想在后面的代码中引用这些元素.
-(void)addItems
{
NSMenuItem *menuItem = [menu addItemWithTitle:@"Start" action:@selector(click:) keyEquivalent:@""];
}
Run Code Online (Sandbox Code Playgroud)
然后我想更新元素的标题:
-(IBAction)click:(id)sender
{
[menuItem setTitle:@"Clicked!"];
}
Run Code Online (Sandbox Code Playgroud)
原因是,"click"动作返回未声明的标识符(menuItem).问题是,我不能在头文件中声明它们,因为它们是动态的,它们可能达到100个项目的数量,因此我不能声明10个项目并使用它们.
我该如何处理这些情况?希望你能帮我!
招呼,朱利安
小智 5
刚遇到这个问题,这很简单.您可以手动跟踪NSMenuItem指针,但最简单的方法是使用标记.创建菜单项时,请执行以下操作:
item = [subMenu addItemWithTitle:@"A1" action:@selector(testing123:) keyEquivalent: @""];
[item setTag:23];
Run Code Online (Sandbox Code Playgroud)
然后在你的代表中:
-(IBAction)testing123:(id) sender
{
NSMenuItem * item = (NSMenuItem*)sender;
int cmdVal = [item tag];
printf("Testing123 - %d\n", cmdVal);
}
Run Code Online (Sandbox Code Playgroud)
就是这样.只需添加10个项目,并为它们提供不同的标记.干杯!