作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用 UIMenuCnotroller
来显示动态生成的项目列表,它们共享相同的操作方法,因此我需要知道在单个操作方法中选择了哪个项目。
但是在action方法中- (void)menuItemAction:(id)sender;
sender其实是UIMenuController
对象,我没有找到任何方法UIMenuController
可以告诉我选择了哪个菜单项。
我能想到的一个解决方案是为不同的item动态生成不同的action选择器,在forwardInvocation
中做一些tricks
但是有没有更简单的方法呢?
最佳答案
您可以像这样使用 UIMenuCnotroller:1)创作:
UIMenuController *menuController = [UIMenuController sharedMenuController];
UIMenuItem *open = [[UIMenuItem alloc] initWithTitle:@"Open" action:@selector(open:)];
UIMenuItem *reDownload = [[UIMenuItem alloc] initWithTitle:@"Re-Download" action:@selector(reDownload:)];
[menuController setMenuItems:[NSArray arrayWithObjects:open, reDownload, nil]];
[menuController setTargetRect:cell.frame inView:self.view];
[menuController setMenuVisible:YES animated:YES];
[open release];
[reDownload release];
2) 捕捉 Action 应该实现下一个方法:
- (BOOL) canPerformAction:(SEL)selector withSender:(id) sender
{
if (selector == @selector(open:))
{
return YES;
}
if (selector == @selector(reDownload:))
{
return YES;
}
return NO;
}
- (BOOL) canBecomeFirstResponder
{
return YES;
}
3) 以及你的方法的实现:
- (void) open:(id) sender
{
[self doSomething];
}
- (void) reDownload:(id) sender
{
[self doSomething];
}
希望这对您有所帮助。
关于iOS:如何从 UIMenuController 获取选定的 UIMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756651/
我是一名优秀的程序员,十分优秀!