使用 UIMenuController 编辑和删除 UITableView 行

Posted

技术标签:

【中文标题】使用 UIMenuController 编辑和删除 UITableView 行【英文标题】:Edit and delete a UITableView row using UIMenuController 【发布时间】:2013-07-30 13:54:07 【问题描述】:

我有一个UITableView,它显示来自我的plist 的数据。有什么方法可以使用UIMenuController 编辑/删除row 的数据?

使用传统的滑动行来编辑/删除行会很好,但我使用UISwipeGestureRecognizer 来显示我的secondViewController - 这个视图控制器是我可以添加数据的地方我的plist

UIMenuItem 出现了,但我不知道如何从这里开始。

如果有人能指导我,将不胜感激。

这是我的longPressHandler,它触发了我的UIMenuController

- (void)longPressHandler:(UILongPressGestureRecognizer *)sender

    if ([sender state] == UIGestureRecognizerStateBegan) 
        [self becomeFirstResponder];

        CGPoint point = [sender locationInView:[self myTableView]];
        NSIndexPath *indexPath =[[self myTableView] indexPathForRowAtPoint:point];

        UIMenuController *menuController = [UIMenuController sharedMenuController];

        UIMenuItem *editFruit = [[UIMenuItem alloc] initWithTitle:@"Edit" action:@selector(editFruit)];
        UIMenuItem *deleteFruit = [[UIMenuItem alloc] initWithTitle:@"Delete" action:@selector(deleteFruit)];

        [menuController setTargetRect:[[self myTableView] rectForRowAtIndexPath:indexPath]
                               inView:[self myTableView]];
        [menuController setMenuItems:[NSArray arrayWithObjects:editFruit, deleteFruit, nil]];

        [menuController setMenuVisible:YES
                              animated:YES];
    

到此结束。

- (void)deleteFruit

    NSLog(@"Delete.");


- (void)editFruit

    NSLog(@"Edit.");

【问题讨论】:

【参考方案1】:

看起来你有你需要的一切。

因此,在您的 deleteFruit 方法中,只需删除您找到的 indexPath 处的项目,然后在 tableview 上调用 -deleteRowsAtIndexPaths:withRowAnimation:。

【讨论】:

以上是关于使用 UIMenuController 编辑和删除 UITableView 行的主要内容,如果未能解决你的问题,请参考以下文章

从 UIMenuController 中删除自定义菜单项

您如何真正从 UIMenuController 中删除 Copy

如何在 UIMenuController 中删除 COPY UIMenuItem

何时使用 UIMenuController

关于在 Swift 中删除 WKWebView 中的 UIMenuController 默认 menuItems 的问题

如何从 UIMenuController 中删除粘贴?