UITableView中Cell的操做

這裏主要講UITableView 中的Cell的操做,包括標記、移動、刪除、插入。數組

爲了簡單快捷,直接從原來那篇的代碼開始,代碼下載地址: http://download.csdn.net/detail/totogo2010/4361870

要進行數據的操做了,把代碼裏的不可變數組改爲可變的:spa

NSArray *list -》NSMutableArray *list .net

一、標記Cell。

效果以下:blog

打開項目,rem

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath。get

添加代碼it

  1. -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{  
  2. //    NSString *rowString = [self.list objectAtIndex:[indexPath row]];  
  3. //    UIAlertView * alter = [[UIAlertView alloc] initWithTitle:@" 選中的行信息" message:rowString delegate:self cancelButtonTitle:@"確 定" otherButtonTitles:nil, nil];  
  4. //    [alter show];  
  5.     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];  
  6.     if (cell.accessoryType == UITableViewCellAccessoryNone) {  
  7.         cell.accessoryType = UITableViewCellAccessoryCheckmark;  
  8.     }else {  
  9.         cell.accessoryType = UITableViewCellAccessoryNone;  
  10.     }  
  11.     [tableView deselectRowAtIndexPath:indexPath animated:YES];  
  12. }  
標記分別有四種效果:

UITableViewCellAccessoryCheckmark
UITableViewCellAccessoryDetailDisclosureButton
UITableViewCellAccessoryDisclosureIndicator
UITableViewCellAccessoryNoneio

能夠本身試試。table

二、刪除Cell

想要實現移動或者刪除行這樣的操做,須要啓動表格的編輯模式。使用的是setEditing:animated:方法。class

打開xib,生成Table的IBoutlet映射  tableView;

在viewDidload裏添加

    [self.tableView setEditing:YES];

這是啓動運行程序,

打開可編輯模式,默認狀況顯示刪除的圖標的。

實現刪除的代碼:

  1. - (void)tableView:(UITableView *)tableView commitEditingStyle:  
  2. (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {  
  3.     NSUInteger row = [indexPath row];  
  4.     if (editingStyle == UITableViewCellEditingStyleDelete) {  
  5.         [self.list removeObjectAtIndex:row];   
  6.         [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]  
  7.                          withRowAnimation:UITableViewRowAnimationAutomatic];   
  8.     }  
  9. }  

這個方法根據參數editingStyleUITableViewCellEditingStyleDelete

在這刪除行的方法又出現了一個常量:UITableViewRowAnimationAutomatic,它表示刪除時的效果,相似的常量還有:
UITableViewRowAnimationAutomatic
UITableViewRowAnimationTop
UITableViewRowAnimationBottom
UITableViewRowAnimationLeft
UITableViewRowAnimationRight
UITableViewRowAnimationMiddle
UITableViewRowAnimationFade
UITableViewRowAnimationNone

從常量名稱打開能夠看出效果來。

這是運行,就能夠刪除其中的一個Cell行了。

三、移動Cell

添加代碼以下:

3.1先把默認的刪除的圖標去掉

  1. - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView  
  2.            editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {   
  3.     return UITableViewCellEditingStyleInsert;   
  4. }   

3.2返回當前Cell是否能夠移動

  1. - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {   
  2.     return YES;   
  3. }  
3.3執行移動操做
  1. - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)  
  2. sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {  
  3.     NSUInteger fromRow = [sourceIndexPath row];   
  4.     NSUInteger toRow = [destinationIndexPath row];   
  5.       
  6.     id object = [self.list objectAtIndex:fromRow];   
  7.     [self.list removeObjectAtIndex:fromRow];   
  8.     [self.list insertObject:object atIndex:toRow];   
  9. }  
運行程序:

怎麼移動呢?不要覺得按住行的任何地方都能移動,要按住最左邊的三道槓的圖標才能拖動移動

四、插入cell:

4.1插入和刪除差很少,在

- (void)tableView:(UITableView *)tableView commitEditingStyle:

(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

添加UITableViewCellEditingStyleInsert判斷

  1. - (void)tableView:(UITableView *)tableView commitEditingStyle:  
  2. (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {  
  3.     NSUInteger row = [indexPath row];  
  4.     if (editingStyle == UITableViewCellEditingStyleDelete) {  
  5.         [self.list removeObjectAtIndex:row];   
  6.         [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]  
  7.                          withRowAnimation:UITableViewRowAnimationAutomatic];   
  8.     }else if(editingStyle == UITableViewCellEditingStyleInsert ){  
  9.         NSArray *insertIndexPaths = [NSArray arrayWithObjects:indexPath,nil];  
  10.         [self.list insertObject:@"inset new Cell" atIndex:row];  
  11.         [tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationMiddle];  
  12.     }  
  13. }  

4.2 修改圖標爲插入樣式。
  1. - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView  
  2.            editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {   
  3.     return UITableViewCellEditingStyleInsert;   
  4. }   
運行,點加號圖標,


完成!

例子代碼:http://download.csdn.net/detail/totogo2010/4398669

相關文章
相關標籤/搜索