【问题标题】:NSMenu - Recent listNSMenu - 最近的列表
【发布时间】:2013-01-03 17:03:50
【问题描述】:

我需要在 cloudapp 或 droplr 中为上传的图像实现“最近列表”。 因此,每当我上传图像时,它应该创建一个带有标题(或 url)的 nsmenuitem。 应该总是有最后 5 个上传的图像。 所以我认为我需要一个 plist 可以保存最后 5 张图像(图像标题),并且当菜单打开时,它应该加载最近的 5 张。但我需要你的帮助,因为我不知道该怎么做.每当上传新图像时,我都必须编辑 plist,使其位于 plist 中的第一位,并且所有旧条目都必须获得它们的 index+1。

希望你能理解我。你知道如何实现这一目标吗? 谢谢

【问题讨论】:

    标签: nsarray plist nsmenuitem nsmenu recent-file-list


    【解决方案1】:

    虽然我不确定这是否是您真正想要做的,但不久前我实现了一个类似的功能。就我而言,它仅适用于文件,但也适用于您的情况(或至少向您展示一种方法)

    void populateRecentList(const char** files)
    {
        NSMenu* fileMenu = [[[NSApp mainMenu] itemWithTitle:@"File"] submenu];
        NSMenu* recentItems = [[fileMenu itemWithTitle:@"Recent Files"] submenu];
    
        [recentItems removeAllItems];
    
        for (int i = 0; i < 4; ++i)
        {
            const char* filename = files[i];
            NSString* name = [NSString stringWithUTF8String: filename];
    
            NSMenuItem* newItem = [[NSMenuItem alloc] initWithTitle:name action:@selector(onRecentFile:) keyEquivalent:@""];
            [newItem setTag:i];
            [newItem setRepresentedObject:[NSString stringWithFormat:@"%d",i]];
            [newItem setKeyEquivalentModifierMask: NSCommandKeyMask];
            [newItem setKeyEquivalent:[NSString stringWithFormat:@"%d",i + 1]];
    
            [recentItems addItem:newItem];
    
            [newItem release];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多