我有一個UITableView,它包含一個tableView,它可以從一個可變數組中填充'原型單元格',並且在選擇它們時顯示'附件複選標記'。我在tableview下面的視圖中有一個textfield,然後將其數據附加到填充tableview的數組。我的問題是,在我追加新的數據添加一個單元格到tableview後,我必須觸摸一個單元格兩次,以取消選擇任何我先前選擇的單元格。iOS:UITableView必須雙擊才能取消選擇
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"skillName" forIndexPath:indexPath];
cell.textLabel.text = skillsOptions[indexPath.row];
// Configure the cell...
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
//tableViewCell.accessoryView.hidden = NO;
tableViewCell.accessoryType = UITableViewCellAccessoryCheckmark;
}
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
//tableViewCell.accessoryView.hidden = YES;
tableViewCell.accessoryType = UITableViewCellAccessoryNone;
[skillsList removeObject:skillsOptions[indexPath.row]];
}
-(void)grabSelectedSkills {
for (NSIndexPath *indexPath in self.tableView.indexPathsForSelectedRows) {
NSString *skill = skillsOptions[indexPath.row];
//NSString *skill = [NSString stringWithFormat:@"%li",(long)indexPath.row];
[skillsList addObject:skill];
}
NSLog(@"skillsList: %@",skillsList);
}
- (IBAction)continue:(id)sender {
[self grabSelectedSkills];
}
- (IBAction)addOtherSkills:(id)sender {
if (self.otherSkill.text.length > 1) {
[skillsOptions addObject:self.otherSkill.text];
self.otherSkill.text = @"";
[self.tableView endEditing:YES];
[self.tableView reloadData];
}
您需要在單元格外跟蹤您的選擇/取消選擇狀態 - 「技能選項」鍵入的字典可能是一個不錯的選擇。然後,您可以在'cellForRowAtIndexPath'和'didSelectRowAtIndexPath'中使用它來根據需要添加/刪除複選標記。您應該取消選擇'didSelectRowAtIndexPath'中的行並刪除'didDeselectRowAtIndexPath' – Paulw11 2015-03-31 05:45:44