Question

I'm using a UITableViewController subclass with clearsSelectionOnViewWillAppear set to YES (the default value).

How do I make changes to a deselected cell when it is automatically deselected on viewWillAppear:?

Was it helpful?

Solution

tableView:didDeselectRowAtIndexPath: is not called when a cell is deselected automatically on viewWillAppear: in a UITableViewController subclass.

Use the following code to make changes to the deselected in this case:

- (void) viewWillAppear:(BOOL)animated {
    // HACK: Need to be called before super if the selection is cleared on viewWillAppear. 
    UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:self.tableView.indexPathForSelectedRow];
    // Change the cell
    [super viewWillAppear:animated];
}

In general, if you use deselectRowAtIndexPath:animated:, tableView:didDeselectRowAtIndexPath: will not be called.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top