iOS:多个单元格的删除(方法二):

简介:

  前面介绍了万无一失的方法一,这里介绍删除单元格的第二种方式,通过删除单元格中的内容的方式进行操作:(但是这种情况有一个小的弊端,由于单元格重用机制,如果单元格内容一样时,标记的存在会造成误删)

删除前

 

删除后:

  分析如下:(如果每一个单元格内容都不一样)采取删除单元格内容的方式是比较简单的方式,那么如何实现多个单元格的删除呢?

首先,定义两个必要的可变的数组,一个是用来存储初始化原始数据的,另一个是用来存储选中单元格后,从里面取出来的数据;

其次,通过数据源的方法将原始数据显示在表格中,同时通过代理的方法,即选中单元格的处理,来给选中的单元格添加指引视图(标记),并将首先选中的单元格内容取出存到数组中,(二次选中则将其取消标记并从数组中删除);

最后,原始数据数组将所有选中的单元格内容全部删除,与此同时,数据选中存储数组也直接清空数组,然后,将表格进行整体刷新即可。

 

代码如下:

复制代码
  1 #import "ViewController.h"
  2 #define NUM 20
  3 
  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 @end
 11 
 12 @implementation ViewController
 13 - (IBAction)deleteButtonClicked:(UIBarButtonItem *)sender
 14 {
 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有多少个row
 44 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 45 {
 46     return self.products.count;
 47 }
 48 //设置每一个单元格的内容
 49 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 50 {
 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 *)indexPath
 84 {
 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
复制代码

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!


本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4792813.html,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
移动开发 前端开发 数据安全/隐私保护
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
223 0
|
7月前
|
安全 编译器 开发工具
​iOS安全加固方法及实现
​iOS安全加固方法及实现
78 0
​iOS安全加固方法及实现
|
7月前
|
存储 监控 iOS开发
iOS应用崩溃了,如何通过崩溃手机连接电脑查找日志方法
在iOS应用开发过程中,调试日志和奔溃日志是开发者必不可少的工具。当iOS手机崩溃时,我们可以连接电脑并使用Xcode Console等工具来查看日志。然而,这种方式可能不够方便,并且处理奔溃日志也相当繁琐。克魔助手的出现为开发者带来了极大的便利,本文将详细介绍其功能和使用方法。 克魔助手会提供两种日志,一种是实时的,一种的是崩溃的。(由于崩溃日志的环境很麻烦,目前只展示实时日志操作步骤)
|
iOS开发 开发者
📝 App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
在iOS应用程序开发过程中,进行App备案并获取公钥及证书SHA-1指纹是至关重要的步骤。本文将介绍如何通过appuploader工具获取iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹,帮助开发者更好地理解和应用该过程。
|
7月前
|
存储 iOS开发 开发者
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
115 0
|
7月前
|
小程序 前端开发 Android开发
解决小程序中textarea ios端样式不兼容的两种方法
解决小程序中textarea ios端样式不兼容的两种方法
229 0
|
4月前
|
语音技术 开发工具 图形学
Unity与IOS⭐一、百度语音IOS版Demo调试方法
Unity与IOS⭐一、百度语音IOS版Demo调试方法
|
1月前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
33 2
|
4月前
|
iOS开发
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
246 0
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
|
7月前
|
Android开发 iOS开发 开发者
App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
442 0