iOS:多個儲存格的刪除(方法二):

來源:互聯網
上載者:User

標籤:

前面介紹了萬無一失的方法一,這裡介紹刪除儲存格的第二種方式,通過刪除儲存格中的內容的方式進行操作:(但是這種情況有一個小的弊端,由於儲存格重用機制,如果儲存格內容一樣時,標記的存在會造成誤刪)

刪除前:

 

刪除後:

  分析如下:(如果每一個儲存格內容都不一樣)採取刪除儲存格內容的方式是比較簡單的方式,那麼如何?多個儲存格的刪除呢?

首先,定義兩個必要的可變的數組,一個是用來儲存初始化未經處理資料的,另一個是用來儲存選中儲存格後,從裡面取出來的資料;

其次,通過資料來源的方法將未經處理資料顯示在表格中,同時通過代理的方法,即選中儲存格的處理,來給選中的儲存格添加指引視圖(標記),並將首先選中的儲存格內容取出存到數組中,(二次選中則將其取消標幟並從數組中刪除);

最後,未經處理資料數組將所有選中的儲存格內容全部刪除,與此同時,資料選中儲存數組也直接清空數組,然後,將表格進行整體重新整理即可。

 

代碼如下:

  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

 

iOS:多個儲存格的刪除(方法二):

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.