【发布时间】:2013-05-22 16:36:09
【问题描述】:
我正在尝试使用带有 Finder Inject 的 NSMenuItem 工具添加右键单击项目。我需要根据单击的文件/文件夹的路径更改项目。但是看起来,使用finder注入,菜单项是在右键单击之前生成的。
换句话说,在检查右键单击文件的路径的条件下,我无法编辑 MenuItems。有什么想法吗?
我试过了
-(NSMenuItem *)createMenuItem {
// I need to catch the path of the clicked item here.
NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:@"ITEM TITLE" action:@selector(myMethodClicked:) keyEquivalent:@""];
[menuItem setTarget:self];
return menuItem;
}
我可以通过下面的方法获取点击文件的路径,见行:
NSArray *selectedFiles = [[ILFinderMenu sharedInstance] selectedItems];
但在添加 menuItems 之前我需要它。整个函数也在下面添加。
- (void)myMethodClicked:(id)sender {
NSMenuItem *item = (NSMenuItem *)sender;
NSMenu *submenu = [item submenu];
NSArray *selectedFiles = [[ILFinderMenu sharedInstance] selectedItems];
NSString *selectedFilePath = [selectedFiles objectAtIndex:0];
NSString *appPath = @"/eclipse/";
if ([selectedFilePath rangeOfString:appPath].location != NSNotFound) {
// disable backup
NSMenuItem *backupMenuItem = [submenu itemAtIndex:1];
[backupMenuItem setEnabled:NO];
// enable share
NSMenuItem *shareItem = [submenu itemAtIndex:0];
[shareItem setEnabled:YES];
} else {
// disable share
NSMenuItem *backupMenuItem = [submenu itemAtIndex:0];
[backupMenuItem setEnabled:NO];
// enable backup
NSMenuItem *shareItem = [submenu itemAtIndex:1];
[shareItem setEnabled:YES];
}
}
【问题讨论】: