これを実現するには、これら 2 つの ivar を UITableViewController クラスに追加して、現在チェックされているセルを追跡します。
NSInteger currentlyCheckedRow;
NSInteger currentlyCheckedSection;
初期化メソッドで、可能な行の値と一致しないように、currentlyCheckedRow
およびcurrentlyCheckedSection
を負の整数に設定します。-1
-tableView:cellForRowAtIndexPath:
メソッドに以下を追加します。
// determine if cell should have checkmark
cell.accessoryType = UITableViewCellAccessoryNone;
if ( (indexPath.row == currentlyCheckedRow) &&
(indexPath.section == currentlyCheckedSection) )
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
};
が呼び出されcurrentlyCheckedRow
たときに ivar を更新します。-tableView:didSelectRowAtIndexPath:
currentlyCheckedRow = indexPath.row;
currentlyCheckedSection = indexPath.section;
[tableView reloadData];