tableView 實現的方法 無分組的cell
#pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.contacts.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // 1.創建cell MJContactCell *cell = [MJContactCell cellWithTableView:tableView]; // 2.設置cell的數據 cell.contact = self.contacts[indexPath.row]; return cell; }
tableView的刷新:
* 局部刷新(使用前提: 刷新前後, 模型數據的個數不變)
- (void)reloadRows:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
* 局部刪除(使用前提: 模型數據減少的個數 == indexPaths的長度)
- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
左滑動會調用 commitEditingStyle 方法 commitEditingStyle 中需要判斷是 添加還是刪除
#pragma mark - tableView的代理方法 /** * 如果實現瞭這個方法,就自動實現瞭滑動刪除的功能 * 點擊瞭刪除按鈕就會調用 * 提交瞭一個編輯操作就會調用(操作:刪除\添加) * @param editingStyle 編輯的行為 * @param indexPath 操作的行號 */ - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // 提交的是刪除操作 // 1.刪除模型數據 [self.contacts removeObjectAtIndex:indexPath.row]; // 2.刷新表格 // 局部刷新某些行(使用前提:模型數據的行數不變) [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop]; // 3.歸檔 [NSKeyedArchiver archiveRootObject:self.contacts toFile:MJContactsFilepath]; } else if (editingStyle == UITableViewCellEditingStyleInsert) { // 1.修改模型數據 MJContact *contact = [[MJContact alloc] init]; contact.name = @"jack"; contact.phone = @"10086"; [self.contacts insertObject:contact atIndex:indexPath.row + 1]; // 2.刷新表格 NSIndexPath *nextPath = [NSIndexPath indexPathForRow:indexPath.row + 1 inSection:0]; [self.tableView insertRowsAtIndexPaths:@[nextPath] withRowAnimation:UITableViewRowAnimationBottom]; // [self.tableView reloadData]; } }
// 讓tableView進入編輯狀態
[self.tableView setEditing:!self.tableView.isEditing animated:YES];
當實現editStyleForRowAtIndexPath 的是時候,當點擊編輯的時候就會調用此方法,此方法是詢問編輯的狀態的
/** * 當tableView進入編輯狀態的時候會調用,詢問每一行進行怎樣的操作(添加\刪除) */ - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return indexPath.row %2 ? UITableViewCellEditingStyleDelete : UITableViewCellEditingStyleInsert; }