iOS:刪除、插入、移動儲存格

來源:互聯網
上載者:User

標籤:

刪除、插入、移動儲存格的具體執行個體如下:

        

 代碼如下:

  1 #import "ViewController.h"  2 #define NUM 20  3 typedef enum  4 {  5     deleteCell,  6     addCell,  7     moveCell,  8 }cellState;  9 @interface ViewController ()<UITableViewDataSource,UITableViewDelegate> 10 @property (weak, nonatomic) IBOutlet UITableView *tableView; 11 @property (strong,nonatomic)NSMutableArray *arrayM; 12 @property (assign,nonatomic)cellState state; //對儲存格要處理的狀態 13 @end 14  15 @implementation ViewController 16 //刪除儲存格 17 - (IBAction)addCellClicked:(UIBarButtonItem *)sender 18 { 19     self.state = addCell; 20     self.tableView.editing = !self.tableView.editing; 21 } 22 //插入儲存格 23 - (IBAction)deleteCellClicked:(UIBarButtonItem *)sender 24 { 25     self.state = deleteCell; 26     self.tableView.editing = !self.tableView.editing; 27 } 28 //移動儲存格 29 - (IBAction)moveCellClicked:(UIBarButtonItem *)sender 30 { 31     self.state = moveCell; 32     self.tableView.editing = !self.tableView.editing; 33 } 34  35 - (void)viewDidLoad { 36     [super viewDidLoad]; 37      38     //初始化 39     self.arrayM = [NSMutableArray arrayWithCapacity:NUM]; 40     for(int i=0; i<NUM; i++) 41     { 42         NSString *productName = [NSString stringWithFormat:@"product-%02d",i+1]; 43         [self.arrayM addObject:productName]; 44     } 45      46     //設定資料來源和代理 47     self.tableView.dataSource = self; 48     self.tableView.delegate = self; 49 } 50  51 #pragma mark -tableView的方法 52 //每一個section有多少個row 53 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 54 { 55     return self.arrayM.count; 56 } 57 //設定每一個儲存格的內容 58 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 59 { 60     //1.根據reuseIdentifier,先到對象池中去找重用的儲存格對象 61     static NSString *reuseIdentifier = @"productCell"; 62     UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:reuseIdentifier]; 63     //2.如果沒有找到,自己建立儲存格對象 64     if(cell == nil) 65     { 66         cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier]; 67     } 68     //3.設定儲存格對象的內容 69     cell.textLabel.text = self.arrayM[indexPath.row]; 70     return cell; 71 } 72  73 #pragma mark -tableView的方法 74 //返回儲存格編輯類型 75 -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 76 { 77     if(self.state == deleteCell) 78     { 79         return UITableViewCellEditingStyleDelete; //刪除 80     } 81     else if(self.state == addCell) 82     { 83         return UITableViewCellEditingStyleInsert; //插入 84     } 85     else 86     { 87         return UITableViewCellEditingStyleNone;   //移動 88     } 89 } 90 //對儲存格做編輯處理 91 -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 92 { 93     //取出當前的儲存格 94     UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 95     if(cell.editingStyle == UITableViewCellEditingStyleDelete)//刪除儲存格 96     { 97         //1.刪除該儲存格 98         [self.arrayM removeObjectAtIndex:indexPath.row]; 99         //2.局部重新整理表格100         [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationMiddle];101     }102     if(cell.editingStyle == UITableViewCellEditingStyleInsert)//插入儲存格103     {104         //1.建立產品資源105         NSString *product = [NSString stringWithFormat:@"product-%02d",arc4random_uniform(20)];106         107         //2.插入該資料到目前的儲存格108         [self.arrayM insertObject:product atIndex:indexPath.row];109         110         //3.整體重新整理表格111         [self.tableView reloadData];112     }113 }114 //是否可以移動115 -(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath116 {117     if(self.state == deleteCell || self.state == addCell)118     {119         return NO;120     }121     else122     {123         return YES;124     }125 }126 //移動儲存格127 -(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath128 {129     //修改數組中元素的順序130     //取出數組中要移動的元素131     NSString *item = [self.arrayM objectAtIndex:sourceIndexPath.row];132     133     //刪除原來位置的元素134     [self.arrayM removeObjectAtIndex:sourceIndexPath.row];135     136     //在新的位置上重新插入新的元素137     [self.arrayM insertObject:item atIndex:destinationIndexPath.row];138 }139 @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.