UITableView定制自定义cell左滑删除按钮小窍门

开发的时候,经常会遇到各式各样的问题,一般而言我们都是跟随着UI的步子开始进行画画,例如tableView 左滑删除按钮,有时候我们用的是系统自带的删除(如:淘宝的左滑),但是如果系统提供的根本满足不了需求,那么如何是好呢?请听我娓娓道来。请继续往下看。

例如:淘宝的左滑

UITableView定制自定义cell左滑删除按钮小窍门_第1张图片
IMG_1240.PNG

需求:

UITableView定制自定义cell左滑删除按钮小窍门_第2张图片
图片.png

实现的效果:

UITableView定制自定义cell左滑删除按钮小窍门_第3张图片
12324.gif
UITableView定制自定义cell左滑删除按钮小窍门_第4张图片
图片.png
图片.png

看到Cell上有这个视图,那就一定能找的到
我们在tableView的点击删除的代理方法 里边遍历cell的子视图

// 编辑样式
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewCellEditingStyleDelete;
}
// 点击删除的代理方法
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    
    for (UIView * view cell.subviews) {
        NSLog(@"%@", view);
    }
}
图片.png
那么问题来了。UITableViewCellDeleteConfirmationView为啥要在要在tableView的点击删除的代理方法里边找??

原因分析:

当删除按钮没有显示的情况下,cell子视图里是没有这个视图的,可以肯定是在左滑的时候系统把它加上去的,我们可重写cell的 insertSubview:atIndex: 这个方法,当添加 delete view 的时候,会进这个方法,那么可以在此方法中对它进行修改。

- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index {
    [super insertSubview:view atIndex:index];
    
    if ([view isKindOfClass:NSClassFromString(@"UITableViewCellDeleteConfirmationView")]) {
        view.top = 10;
        view.height = self.height - 10;
        
        for (UIButton *btn in view.subviews) {
            
            if ([btn isKindOfClass:[UIButton class]]) {
                
                [btn setBackgroundColor:[UIColor colorWithHexString:@"F2F2F2"]];
                
                [btn setTitle:nil forState:UIControlStateNormal];
                
                [btn setImage:[UIImage imageNamed:@"list_deleting"] forState:UIControlStateNormal];
                
                [btn setTintColor:[UIColor whiteColor]];
            }
        }
    }
}


之前又在网上看到有这么一位大神的文章,文章链接点我,为此还花钱买了这位大神写的电子版的书籍,不得不说 代码写的贼6,但是我发现我如此继承他,那么上拉的时候就不行了,就不能拉了。可能是他里面的做了什么,看到那里面的各种算,我整个都懵逼了。这麻蛋得改到猴年马月呀。

作者实现效果


UITableView定制自定义cell左滑删除按钮小窍门_第5张图片
1233.gif

放在我们项目中出现的问题,不能往上拽了。就貌似tableView高度写死了一样。其实代码并没有这样干。

UITableView定制自定义cell左滑删除按钮小窍门_第6张图片
1222.gif

附上demo:
请使劲戳我

你可能感兴趣的:(UITableView定制自定义cell左滑删除按钮小窍门)