首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSMenuItem启用项目

NSMenuItem启用项目
EN

Stack Overflow用户
提问于 2012-01-06 07:29:12
回答 1查看 6.2K关注 0票数 7

我有一个NSMenuItem,里面有一堆东西,但是...这个列表就是没有启用。

我的意思是:

这是我的代码:

代码语言:javascript
复制
- (void)didFetchNewList:(NSArray *)list
{
    NSArray *smallList = [list subarrayWithRange:NSMakeRange(0, 10)];

    NSMenu *menu = [[NSMenu alloc] initWithTitle:@""];

    for (NSDictionary *dict in smallList)
    {
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"MMM dd @ HH:mm:ss"];

        NSMenuItem *soMenuItem = [[NSMenuItem alloc] initWithTitle:
                  [dateFormatter stringFromDate:[dict objectForKey:@"date"]]
                                                            action:nil
                                                     keyEquivalent:@""];
        [soMenuItem setEnabled:YES];

        [menu addItem:soMenuItem];        
    }

    [menu addItem:[NSMenuItem separatorItem]];

    NSMenuItem *soMenuItem =  [[NSMenuItem alloc]
                     initWithTitle:@"Settings" action:nil keyEquivalent:@"S"];
    [soMenuItem setEnabled:YES];
    [menu addItem:soMenuItem];

    [statusItem setMenu:menu];
    [statusItem setEnabled:YES];

}

我正在将所有内容都设置为启用,但它仍然处于禁用状态。我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-06 07:49:04

当您创建NSMenuItem时,您的项必须有一个有效的目标和一个有效的选择器。这意味着目标不能为空,并且必须响应传递的选择器。请记住,在这种情况下,空选择器将不会启用菜单项。

代码语言:javascript
复制
NSMenu *myMenu;
NSMenuItem *myItem;

myMenu = [[NSMenu alloc] initWithTitle:@""];
myItem = [[NSMenuItem alloc] initWithTitle:@"Test" action:@selector(validSelector:) keyEquivalent:@""];
[myItem setTarget:myTarget];
[myMenu addItem:myItem];
// Do anything you like
[myMenu release];
[myItem release];

EDIT:我看到你在创建菜单项之后正在用YES调用-[NSMenuItem setEnabled:]。这不是必需的,因为它们将在默认情况下启用。

EDIT 2:正如NSGod指出的(参见下面的注释),目标可以是空的。在这种情况下,应用程序的第一个响应器将收到传递的方法。也就是说,只要第一个响应者实现了该方法。(编辑3)但是,如果不是这样,该方法将被发送到响应器链中的下一个响应器。这将继续进行,直到找到响应选择器的应答器,或者没有应答器可供检查。当找不到响应者时,您的菜单项将不会被启用。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8751431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档