UITableViewCell單元格的刪除、插入、移動

UITableViewDelegate的方法
 
    設置 編輯模式 中得cell的編輯樣式 (刪除或插入)
     - (UITableViewCellEditingStyle) tableView:(UITableView *)tableView  editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath;
 
UITableViewDataSource的方法
     
     設置該單元格可否被編輯
     - (BOOL)tableView:(UITableView *)tableView  canEditRowAtIndexPath:(NSIndexPath *)indexPath;
     設置該單元格可否被移動
     - (BOOL) tableView:(UITableView *)tableView  canMoveRowAtIndexPath:(NSIndexPath *)indexPath;
 
      對單元格進行編輯 時會調用此方法
 
刪除單元格:1)先 刪除數據源 2)接着 刪除單元格 3)刷新單元格
插入單元格:1)先 插入數據源 2)接着 插入單元格 3)刷新單元格
 
     - (void) tableView:(UITableView *)tableView  commitEditingStyle:(UITableViewCellEditingStyle)editingStyle  forRowAtIndexPath:(NSIndexPath *)indexPath
{
      //判斷編輯樣式(刪除或插入)
     if (editingStyle== UITableViewCellEditingStyleDelete)  
     {  
      //必需要先刪除數據

          NSMutableArray *arr=[self.dataSourceArray objectAtIndex:indexPath.section];數組

          [arr removeObjectAtIndex:indexPath.row];spa

          //接着刪除單元格 (參數是數組,可能刪除多行
          [tableView deleteRowsAtIndexPaths:[ NSArray arrayWithObject :indexPath] withRowAnimation:UITableViewRowAnimationFade];
          //刪除完後要刷新tableView
          [tableView reloadData];
     }
     else if (editingStyle==UITableViewCellEditingStyleInsert)   //插入模式
     {
          //下面根據實際狀況
          CSFriends *friend=[[CSFriends alloc]init];
          friend.imageName=[NSString stringWithFormat:@"%d.jpg",2];
          friend.name=@"超級布羅利";
          friend.skill=@"超級賽亞人";
          //必需要先插入數據源
          NSMutableArray *arr=[ self. dataSourceArray  objectAtIndex :indexPath. section ];
          [arr insertObject:friend atIndex:indexPath.row];
          //接着插入單元格 (參數是數組,可能插入多行
          [tableView insertRowsAtIndexPaths:[ NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationMiddle];
          //插入後要刷新tableView
          [tableView reloadData];
    }
}
 
      對單元格進行移動時會調用此方法
 
移動單元格:1)先將要移動的數據從 數據源的原位置中 刪除 2)接着再講數據 插入數據源的新位置 3)刷新單元格
 
     -(void) tableView:(UITableView *)tableView  moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath  toIndexPath:(NSIndexPath *)destinationIndexPath
{
      //先找到要移動的數據(sourceIndexPath是移動前的位置)
      NSMutableArray *array= self.  dataSourceArray [ sourceIndexPath . section ];
      CSFriends  *friend= array[ sourceIndexPath .row];
      // 將該數據從數據源刪除
     [array  removeObject:friend];
      //再找到新位置的數據源 (destinationIndexPath是移動後的位置)
      NSMutableArray *array= self.  dataSourceArray [ destinationIndexPath . section ];
      //將數據先添加入數據源的新位置
     [array insertObject:friend  atIndex: destinationIndexPath. row];
      //最後刷新單元格
     [tableView reloadData];
}
相關文章
相關標籤/搜索