bear-zyy

自定义左滑cell删除样式

自定义左滑cell删除样式

1、首先实现左滑删除功能

实现tableview的代理事件,不然什么都是免谈

1
2
3
4
5
6
7
8
9
10
-(UITableViewCellEditingStyle )tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewCellEditingStyleDelete;//这个是删除
}
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
return YES;
}
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
//在这个方法里面实现删除操作
}

2、改变左滑cell删除按钮

这里就要用到一点黑科技了

首先来看看左滑后,UI图层

logo
logo

看到这个图层后,就可以操作了

UITableViewCellDeleteConfirmationView这个view在代码中是关联不出来的,不像contentview,但是我们可以获取到它。并且改变它。

在cell中的代码如下,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-(void)layoutSubviews{
[super layoutSubviews];
for (UIView * view in self.subviews) {
if ([view isKindOfClass:NSClassFromString(@"UITableViewCellDeleteConfirmationView")]) {
CGRect cRect = view.frame;
cRect.size.height = self.contentView.frame.size.height - 20;
cRect.origin.y = self.contentView.frame.origin.y + 10;
view.frame = cRect;
UIView * confirmView = (UIView *)[view.subviews firstObject];
confirmView.backgroundColor = [UIColor redColor];
}
}
}

3、实现微信那样左滑出现两个按钮

在控制器中实现这个代理事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-(NSArray<UITableViewRowAction *>*)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewRowAction *rowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"删除" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
//实现点击删除按钮的操作
}];
rowAction.backgroundColor = [UIColor redColor];
UITableViewRowAction *rowaction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"置顶" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
//实现点击置顶按钮的操作
}];
rowaction.backgroundColor = [UIColor grayColor];
return @[rowAction , rowaction];
}
⬅️ Go back