【问题标题】: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];
}
}