- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // 取消前一個選中的,就是單選啦 NSIndexPath *lastIndex = [NSIndexPath indexPathForRow:_selectedIndex inSection:0]; UITableViewCell *lastCell = [tableView cellForRowAtIndexPath:lastIndex]; lastCell.accessoryType = UITableViewCellAccessoryNone; // 選中操做 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; cell.accessoryType = UITableViewCellAccessoryCheckmark; // 保存選中的 _selectedIndex = indexPath.row; [_mainTableView performSelector:@selector(deselectRowAtIndexPath:animated:) withObject:indexPath afterDelay:.5]; }
#pragma mark - 返回cell - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]; } ContactGroupList_contactGroupListModel *cellModel = _datasource[indexPath.row]; cell.textLabel.text = cellModel.theName; // 重用機制,若是選中的行正好要重用 if (_selectedIndex == indexPath.row) { cell.accessoryType = UITableViewCellAccessoryCheckmark; } else { cell.accessoryType = UITableViewCellAccessoryNone; } cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; }