iOS:多个单元格的删除(方法二):
前面介绍了万无一失的方法一,这里介绍删除单元格的第二种方式,通过删除单元格中的内容的方式进行操作:(但是这种情况有一个小的弊端,由于单元格重用机制,如果单元格内容一样时,标记的存在会造成误删)
删除前:
删除后:
分析如下:(如果每一个单元格内容都不一样)采取删除单元格内容的方式是比较简单的方式,那么如何实现多个单元格的删除呢?
首先,定义两个必要的可变的数组,一个是用来存储初始化原始数据的,另一个是用来存储选中单元格后,从里面取出来的数据;
其次,通过数据源的方法将原始数据显示在表格中,同时通过代理的方法,即选中单元格的处理,来给选中的单元格添加指引视图(标记),并将首先选中的单元格内容取出存到数组中,(二次选中则将其取消标记并从数组中删除);
最后,原始数据数组将所有选中的单元格内容全部删除,与此同时,数据选中存储数组也直接清空数组,然后,将表格进行整体刷新即可。
代码如下:
![](/assets/blank.gif)
1 #import "ViewController.h"2 #define NUM 203 4 @interface ViewController ()<UITableViewDataSource,UITableViewDelegate>5 @property (weak, nonatomic) IBOutlet UITableView *tableView;6 @property (strong,nonatomic)NSMutableArray *products; //原始的数据库存7 @property (strong,nonatomic)NSMutableArray *productStore; //选中的数据库存8 - (IBAction)deleteButtonClicked:(UIBarButtonItem *)sender;9 10 @end11 12 @implementation ViewController13 - (IBAction)deleteButtonClicked:(UIBarButtonItem *)sender14 {15 //1.将选中的所有产品从原始库存中删除16 [self.productStore enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {17 [self.products removeObject:obj];18 }];19 20 //2.清空选中的数据库存21 [self.productStore removeAllObjects];22 23 //3.整体刷新表格24 [self.tableView reloadData];25 }26 - (void)viewDidLoad {27 [super viewDidLoad];28 //初始化29 self.products = [NSMutableArray arrayWithCapacity:NUM];30 self.productStore = [NSMutableArray arrayWithCapacity:NUM];31 for(int i=0; i<NUM; i++)32 {33 NSString *product = [NSString stringWithFormat:@"product-%02d",i];34 [self.products addObject:product];35 }36 37 //设置数据源和代理38 self.tableView.dataSource = self;39 self.tableView.delegate = self;40 }41 42 #pragma mark -tableView的数据源方法43 //每一个scetion有多少个row44 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section45 {46 return self.products.count;47 }48 //设置每一个单元格的内容49 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath50 {51 //1.根据reuseIdentifier,先到对象池中去找重用的单元格对象52 static NSString *reuseIdentifier = @"productCell";53 UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:reuseIdentifier];54 //2.如果没有找到,自己创建单元格对象55 if(cell == nil)56 {57 cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];58 }59 //3.设置单元格对象的内容60 cell.textLabel.text = self.products[indexPath.row];61 //设置字体颜色62 cell.textLabel.textColor = [UIColor redColor];63 //设置字体大小64 cell.textLabel.font = [UIFont systemFontOfSize:20];65 //设置单元格颜色66 cell.tintColor = [UIColor orangeColor];67 68 if([self.productStore containsObject:self.products[indexPath.row]]) //首次选中69 {70 //添加标记显示71 cell.accessoryType = UITableViewCellAccessoryCheckmark;72 }73 else //二次选中74 {75 //取消标记显示76 cell.accessoryType = UITableViewCellAccessoryNone;77 }78 return cell;79 }80 81 #pragma mark -tableView的代理方法82 //选中单元格时的处理83 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath84 {85 //获取当前选中的单元格86 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];87 88 //取出单元格中的产品89 NSString *product = self.products[indexPath.row];90 91 //对选中的单元格添加辅助指引视图,并将产品存储到数组中92 if([self.productStore containsObject:product]) //已经选中过一次93 {94 //取消标记95 cell.accessoryType = UITableViewCellAccessoryNone;96 97 //将产品从存储数组中删除98 [self.productStore removeObject:product];99 } 100 else //首先选中 101 { 102 //添加标记 103 cell.accessoryType = UITableViewCellAccessoryCheckmark; 104 105 //将产品添加到存储数组中 106 [self.productStore addObject:product]; 107 } 108 } 109 @end
转载于:https://www.cnblogs.com/daxiong520/p/4915994.html
iOS:多个单元格的删除(方法二):相关推荐
- 计算机表格大小怎么调整,excel把表格拉大_excel调整单元格大小的方法步骤详解...
excel在单元格中要输入的数据太多了,二单元格的位置又太小了,怎么办,excel单元格的大小改怎么调,那就有小编告诉你两个可靠的方法吧.希望对你有帮助! excel调整单元格大小的方法一 1.打开一 ...
- html table拓宽,excel拉长单元格_excel调整单元格大小的方法步骤详解
excel在单元格中要输入的数据太多了,二单元格的位置又太小了,怎么办,excel单元格的大小改怎么调,那就有阿呼告诉你两个可靠的方法吧.希望对你有帮助! excel调整单元格大小的方法一 1.打开一 ...
- 锁定单个或多个单元格与解锁方法
http://office.jb51.net/excel2003/3598.html 企业管理的一项重要手段就是数据报表,同一归口管理的各个子单位的报表都用同一个格式和结构的软件,这就是常说的模板.在 ...
- EXCEL中将多个单元格内容合并到一个单元格中的方法(转帖+亲自实践)
原帖位置:EXCEL中将多个单元格内容合并到一个单元格中的方法 http://t.excelhome.net/thread-3875-1-1.html 说明:这个技巧主要用到以下2个功能 1.Offi ...
- 【JAVA基础】在Word中合并单元格时删除重复值
程序环境: 方法1:手动引入.将 Free Spire.Doc for Java 下载到本地,解压,找到lib文件夹下的Spire.Doc.jar文件.在IDEA中打开如下界面,将本地路径中的 ...
- Java 在Word中合并单元格时删除重复值
程序环境: 方法1:手动引入.将 Free Spire.Doc for Java下载到本地,解压,找到lib文件夹下的Spire.Doc.jar文件.在IDEA中打开如下界面,将本地路径中的ja ...
- 如何实现一键Excel单元格计算公式删除保留格式
如何实现一键Excel单元格计算公式删除保留格式 1 2 3 4 5 6 7 分步阅读 不借助其他软件,直接使用Excel,怎么实现Excel文件中的计算公式的去除,同时又能保留住相应单元格的格式. ...
- VBA-Excel中单元格的引用方法
VBA-Excel中单元格的引用方法 使用VBA对Excel中的单元格或单元格区域进行选择有很多种方法,可以归结为两大类: 使用行列数进行选择 根据已经选择的单元格(区域)进行再选择 1.使用rang ...
- JAVA EXCEL导出合并单元格自定义封装方法
转载在C站上面看到一个大神写的自定义封装方法 转载地址:springboot 使用Poi 自定义封装方法 合并excel中的单元格_Tongyao-CSDN博客_springboot合并单元格 之前都 ...
最新文章
- 使用 Node.js 开发简单的脚手架工具
- cglib中Enhancer的简单使用
- 刷magisk模块后不能开机_联想启天商用电脑刷BIOS或维修换主板后 开机叫两声处理办法...
- makefile常用讲解(2)
- 高等数学二python实现导数与微分
- Spring MVC拦截器(Interceptor)的配置及使用
- 六款值得推荐的android(安卓)开源框架简介
- 【工具】开发环境之vagrant
- nsis如何设置运行安装包传参_使用NSIS制作安装包
- 反编译,修改jar文件
- neo4j图数据库导入scv文件
- 【学习记录】QT5 的简单界面设计及错误总结
- 2019DTCC大会感受
- 软件智能:aaas系统 后天八卦-aaas作为组织者的数据结构及其运行时
- 代理模式——远程代理(一)
- 帝国CMS7.5仿千图网图片素材下载模板升级版
- python给成绩表加上姓名列_Python Pandas 基本操作教学之成绩表
- PHP+Laravel+Fpdi+Fpdf 在PDF模板上编辑自定义文字并输出新PDF文件示例
- java酒店管理系统_java酒店管理系统(源码+数据库脚本)
- lombok 异常:Lombok needs a default constructor in the base class less... (Ctrl+F1) Inspe
热门文章
- Hive学习笔记 —— Hive的体系结构
- 房地产萧条的两个标志
- PDFMaker无法找到Adobe PDF Printer的打印机驱动
- bp神经网络代码_机器学习(周志华)课后习题——第五章——神经网络
- 取消Ajax请求 || Ajax重复请求问题
- Oracle 技巧篇-快速批量删除当前数据库连接的用户,一键清空所有session会话方法
- CTFshow php特性 web123
- [YTU]_2446( C++习题 输入输出--私有继承)
- 三维空间碰撞问题;空间中两直线的最短距离及最近点
- php orm url,PHP ORM使用之