UITableView如何实现左滑删除功能?

UITableView如何实现左滑删除功能?

  • 步骤如下:

  • 1.实现UITableView数据源代理中的一个方法即可。方法名称:- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;

  • 2.示例代码如下:

// 1.只要实现这个方法,就会拥有左滑删除功能 2.点击"左滑出现的按钮"会调用这个方法
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 修改模型
    [self.modeArray removeObjectAtIndex:indexPath.row];
    // 刷新表格
    [self.shoppingCartTV deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];
}

拓展

  • 单纯的实现上面一个方法实现左滑删除功能,对于我们开发者来说,往往是不够的,很多时候我们需要自定义删除按钮的样式,例如:文字、背景图片等。

  • 自定义删除按钮,示例代码如下:

    • 注意:自定义删除按钮,首先需要先自定义UITabelViewCell,然后再自定义的cell类内部重写layoutSubview:方法
#pragma mark - layoutSubview
- (void)layoutSubviews
{
    [super layoutSubviews];
    
    for (UIView *subView in self.subviews) {
        
        if ([subView isKindOfClass:NSClassFromString(@"UITableViewCellDeleteConfirmationView")]) {
            // 当遍历到存放删除按钮的控件时进来
            for (UIButton *btn in subView.subviews) {
                // btn的类型是_UITableViewCellActionButton类型,我们只需要把它当UIButton看待就好了
                if ([btn isKindOfClass:[UIButton class]]) {
                    // 当遍历到删除按钮时进来
                    if (btn) {
                        [btn setTitle:@"" forState:UIControlStateNormal];
                        [btn setImage:[UIImage imageNamed:@"shanchu"] forState:UIControlStateNormal];
                        [btn sizeToFit];
                        btn.frame = CGRectMake(0, 0, btn.frame.size.width, subView.gfk_height);
                        btn.backgroundColor=[UIColor colorWithHexString:@"#0D588A"];
                    }
                }
            }
        }
    }
}

你可能感兴趣的:(UITableView如何实现左滑删除功能?)