NSMenu - 最新列表

时间:2012-07-12 13:47:35

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

我需要为上传的图片实现“最近列表”,例如cloudapp或droplr。 因此,每当我上传图像时,都应该创建一个带有标题(或网址)的nsmenuitem。 应始终有最后5个上传的图像。 所以我想我需要一个plist,我可以保存最后5个图像(图像的标题),当菜单打开时,它应该加载最近的5.但我需要你的帮助,因为我不知道如何做到这一点。每当上传新图像时我都必须编辑plist,因此它位于plist的第一个位置,并且所有旧的entrow必须得到它们的索引+ 1.

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

1 个答案:

答案 0 :(得分:0)

虽然我不确定这是你真正想做的事情,但我不久前实现了类似的功能。对于我的情况,它只是用于文件,但也适用于你的情况(或至少告诉你一种方法)

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];
    }
}