使用UIMenuController编辑和删除UITableView行



我有一个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.");
}

看起来您已经拥有了所需的一切。

因此,在deleteFruit方法中,只需删除您找到的indexPath处的项,并在表视图上调用-deleteRowsAtIndexPaths:withRowAnimation:。

最新更新