【问题标题】:Slide to delete UITableViewCell not working滑动删除 UITableViewCell 不起作用
【发布时间】:2014-12-19 04:33:41
【问题描述】:

我使用 SWRevealViewController 作为侧边菜单。加载的 UIViewController 包含一个 UITableView。表格视图已启用滑动删除。但是,编辑功能并不总是有效。即 tableView: commitEditingStyle: 不会被解雇。虽然它发生在几次尝试之后。我相信手势识别器存在冲突。已经玩了一天了。有人可以帮我吗?

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSUInteger row = [indexPath row];
    NSUInteger count = [self.shopListArray count];
    if (row < count) {
        [[[self.shopListArray objectAtIndex:indexPath.section] objectForKey:IFRecipe_ingredient]  removeObjectAtIndex:row];
    }
    [self.shopListTableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}

当手势发生冲突时我该怎么办?

【问题讨论】:

  • 用相关代码更新您的问题。
  • 我很确定 SWRevealViewController 也不会工作 UISlider :)

标签: ios objective-c uitableview


【解决方案1】:

在您的代码中设置UITableViewCellEditingStyle

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
 return UITableViewCellEditingStyleDelete;
}

并且 SWRevealViewController 中的平移手势识别器存在问题,在 superview 中包含平移手势识别器,我们在视图中遇到 tableview swibe 识别器问题,删除 SWRevealViewController 中的平移手势并检查。

【讨论】:

  • 如果没有实现,这是默认的。
  • 我也用过这个。但徒劳无功。如果我不使用 SWRevealViewController,上面的代码可以正常工作。
【解决方案2】:

试试这个,

首先在您的加载方法或需要时使表格视图编辑模式为“是”。

[self.tableView setEditing:YES animated:YES];

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
    return UITableViewCellEditingStyleDelete; 
}

- (BOOL)tableView:(UITableView *)tableview shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}

【讨论】:

    【解决方案3】:

    从此https://stackoverflow.com/a/25987204/4376612 帖子中找到了解决方案。解决了我的问题。必须使用以下代码,

    - (BOOL)revealControllerPanGestureShouldBegin:(SWRevealViewController *)revealController
    {
        float velocity = [revealController.panGestureRecognizer velocityInView:self.view].x;
        if (velocity < 0 && self.revealViewController.frontViewPosition == FrontViewPositionLeft)
            return NO;
        else
            return YES;
    }
    

    【讨论】:

      【解决方案4】:

      为了启用表格视图的编辑模式,你可以在 UITableView 上调用编辑方法, 在viewdidloadviewwillappear

      // try this
      
      [self.tableView setEditing:YES animated:YES];
      

      之后你就可以轻松做到了。

      【讨论】:

      • 但在上述情况下。它在单元格中显示减号。我想实现幻灯片删除。
      猜你喜欢
      • 2011-04-13
      • 1970-01-01
      • 2014-07-28
      • 2014-10-08
      • 2017-12-01
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多