使用UIMenuController编辑和删除UITableView行

时间:2013-07-30 13:54:08

标签: uitableview uigesturerecognizer uimenucontroller uimenuitem

我有UITableView,显示我plist的数据。我有什么办法可以使用row编辑/删除UIMenuController的数据吗?

使用传统的滑动行来编辑/删除行会很好,但是我使用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 个答案:

答案 0 :(得分:1)

看起来你已经拥有了所有你需要的东西。

所以在你的deleteFruit方法中,只需删除你找到的indexPath上的项目,并在tableview上调用-deleteRowsAtIndexPaths:withRowAnimation:。

相关问题