【作者前言】:13年入圈,分享些本人工作中遇到的点点滴滴那些事儿,17年刚开始写博客,高手勿喷!以分享交流为主,欢迎各路豪杰点评改进!
1.应用场景举例:
Paste_Image.png2.实现目标:
当UITableViewCell对象向左滑动时,显示删除选项点击后可以对当前Cell进行删除
3.代码说明:
//遵循UITableViewDataSource/UITableViewDelegate协议,我就不说了
/** 开启cell的编辑模式*/
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
/** 设置cell的编辑模式下,可操作的类型*/
/** 这里可操作的类型如果为多种,则以或 | 的方式进行返回*/
// return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert 删除和插入
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete;
}
/** 进入编辑状态后,按下编辑按钮后触发的操作*/
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView setEditing:NO animated:YES];
if (editingStyle == UITableViewCellEditingStyleDelete) {//删除操作
//为了避免误删除,弹出提示窗让用户进行确认
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"你确定删除该消息?" preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
[alertController addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
//确定 即为删除 用数据源_dataArray移除掉对应的数据
[_dataArray removeObjectAtIndex:indexPath.row];
//移除后在将tableView对应的行删除刷新
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}]];
[self presentViewController:alertController animated:YES completion:nil];
}
}
/** 修改编辑按钮文字*/
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
return @"删除";
}
/** 优化效果:设置在tableView进入编辑状态时,Cell不会缩进*/
- (BOOL)tableView: (UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath
{
return NO;
}
网友评论