讓iOS TableView可以排序

更改TableView的cell排序,首先要開啟編輯狀態
[self.myTable  setEditing:YES  animated:YES];

此時TableView會長這樣

這不是我們要的效果,我們只要編輯順序,而不是編輯或刪除資料本身。
所以要實作下列二個method

// TableView可以排序
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the item to be re-orderable.
    return YES;
}

// 實際排序的方式
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
    MyDataItem *dataDict = [self.myDataSource objectAtIndex:fromIndexPath.row];
    [self.myDataSource removeObject:dataDict];
    [self.myDataSource insertObject:dataDict atIndex:toIndexPath.row];
}

作到這邊,的確是可以正確排序,但是~討厭的delete icon還是會出現在cell左側,要解決此狀況請再添加如下代碼

// Editing狀態下的TableCell不要出現紅色delete icon
- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
   // The editing style for a row is the kind of button displayed to the left of the cell when in editing mode.
    return UITableViewCellEditingStyleNone;
}

參考資料

沒有留言: