IOS MONO Call Menus Duplicate 单元格菜单
完成程序中项目的Duplicate功能
下图为产品的Duplicate功能,长按可以弹出 SharedMenuController (ShouldShowMenu方法), UIMenuItem里可以自己定义 UIMenuItem
我所需要完成的是项目列表中的duplicate
首先在 项目列表所属的UITableViewSource中添加以下三个方法
1 public override bool ShouldShowMenu (UITableView tableView, NSIndexPath rowAtindexPath) 2 { 3 var menuItemCopy = new UIMenuItem (Strings.Duplicate.Localize(), new Selector ("DuplicateDiagram")); 4 5 UIMenuController.SharedMenuController.MenuItems = new UIMenuItem[] { menuItemCopy }; 6 UIMenuController.SharedMenuController.Update (); 7 return true; 8 } 9 10 public override bool CanPerformAction (UITableView tableView, Selector action, NSIndexPath indexPath, NSObject sender) 11 { 12 return true; 13 } 14 15 public override void PerformAction (UITableView tableView, Selector action, NSIndexPath indexPath, NSObject sender) 16 { 17 }
MONO介绍如下
![](//images0.cnblogs.com/i/636071/201406/041224082709537.png)
ShouldShowMenu方法中对UIMenuController.SharedMenuController.MenuItems对象进行修改和更新,并且返回TRUE。
且自定义的 UIMenuItem中调用的方法应当在UITableViewCell中
1 public class DiagramViewCell:UITableViewCell 2 { 3 ... 4 public override bool CanPerform (Selector action, MonoTouch.Foundation.NSObject withSender) 5 { 6 return action.Name == "DuplicateDiagram"; 7 } 8 9 10 [Export("DuplicateDiagram")] 11 public void DuplicateDiagram() 12 { 13 if (null != DuplicateAction) { 14 DuplicateAction.Invoke (ProjectFile); 15 } 16 } 17 .. 18 }
通过 CanPerform中返回BOOL数值来排除无用的体统默认action。
最终效果: