以下のコードは、選択したセルを強調表示して横にチェックマークを付けたいときに機能します。
最後のセルまたはハイライトの選択を解除し、新しく選択したセルの横にチェックマークを付けてハイライトするので、別のセルを選択したいときにも機能します。
また、選択したセルを選択解除してチェックマークを付けずにUITableで強調表示するときに、選択したセルを再選択したときにも機能します。
ただし、同じセルを 3 回目に選択すると (つまり、最初に選択すると、コードによって強調表示され、次にチェックマークが付けられます。同じセルを 2 回目に選択すると、強調表示とチェックマークが削除され、同じセルを選択するのは今で 3 回目です) セルが一瞬ハイライトされ、ハイライトが消えます。セルの横にあるチェックマークも、選択を解除したばかりのように表示されません。同じセルを何度選択しても、強調表示されたり、横にチェック マークが付けられたりしません。これを行う唯一の方法は、最初に別のセルを選択してから、元のセルを再度選択することです。助けてください。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath { // select new UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; cell.accessoryType = UITableViewCellAccessoryCheckmark; [cell setSelected:TRUE animated:TRUE]; // deselect old UITableViewCell *old = [self.tableView cellForRowAtIndexPath:self.lastSelected]; old.accessoryType = UITableViewCellAccessoryNone; [old setSelected:FALSE animated:TRUE]; // keep track of the last selected cell self.lastSelected = indexPath; }
Storyboard を介して UITableView を構築しました。