iOS 实现UITableView左滑删除功能的三种方案
2021-03-17 本文已影响0人
原来是吐气啊
一、概述
UITbableView作为列表展示信息,除了展示的功能,有时会用到删除的功能,删除功能可以直接使用系统自带的删除功能,当横向向左轻扫cell时,右侧出现红色的删除按钮,点击删除当前cell。
二、效果图
删除GIF.gif三、技术实现
方案1:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
NIMRecentSession *recentSession = self.recentSessions[indexPath.row];
if (editingStyle == UITableViewCellEditingStyleDelete) {
//删除数据源
}
}
方案2:
-(NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"删除" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
//删除数据源
}];
deleteAction.backgroundColor = [UIColor redColor];
return @[deleteAction];
}
方案3:
API_AVAILABLE(ios(11.0))
- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath {
UIContextualAction *deleteAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:@"删除" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
//删除数据源
}];
deleteAction.backgroundColor = Red6;
UISwipeActionsConfiguration *Configuration = [UISwipeActionsConfiguration configurationWithActions:@[deleteAction]];
Configuration.performsFirstActionWithFullSwipe = NO;
return Configuration;
}