I am developing an iPhone application with UITableView
. I have implemented a check mark on each cell with didSelectRowAtIndexPath
delegate.
Now I want to select a cell that disable all other cells (remove the check marks) and vice versa (eg: to select 8th cell that shows the check mark on 8th cell and remove the check mark of other cells, then select other cell shows the check mark on that cell and remove the check mark on 8th cell).
How to implement this in UITableView
?
You can achieve this by adding these two ivars to your UITableViewController class to track which cell is currently checked:
NSInteger currentlyCheckedRow;
NSInteger currentlyCheckedSection;
In your initialize method, set currentlyCheckedRow
and currentlyCheckedSection
to a negative integer such as -1
so that it is not matched by any possible row value.
Add the following to your -tableView:cellForRowAtIndexPath:
method:
// determine if cell should have checkmark
cell.accessoryType = UITableViewCellAccessoryNone;
if ( (indexPath.row == currentlyCheckedRow) &&
(indexPath.section == currentlyCheckedSection) )
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
};
Update the currentlyCheckedRow
ivar when -tableView:didSelectRowAtIndexPath:
is called:
currentlyCheckedRow = indexPath.row;
currentlyCheckedSection = indexPath.section;
[tableView reloadData];