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介绍如下


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。

 

最终效果:

 

 

 

 

 

posted @ 2014-06-04 14:26  cxzhe  阅读(191)  评论(0编辑  收藏  举报