【问题标题】:Creating dynamic count of NSMenuItems创建 NSMenuItems 的动态计数
【发布时间】:2011-11-20 10:39:51
【问题描述】:

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

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

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

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

那我要更新元素的Title:

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

当然,“点击”动作会返回一个未声明的标识符(menuItem)。 问题是,我不能在头文件中声明它们,因为它们是动态的,并且它们可能会达到 100 个项目的数量,所以我不能声明 10 个项目并使用它们。

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

您好, 朱利安

【问题讨论】:

    标签: objective-c dynamic add nsmenuitem nsmenu


    【解决方案1】:

    刚刚遇到这个问题,很简单。您可以手动跟踪您的 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() 循环中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 2015-02-18
    • 2012-08-21
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多