iOS6 table views and accessory segues
If you’re performing segues on a table row selection, you’re probably used to doing something like this in the prepareForSegue:
method:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"mySegueIdentifier"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
... do some work ...
}
}
In iOS6, segues can now be connected from a table cell’s accessory action. When making this connection, however, the indexPathForSelectedRow
returns nil
. The prepareForSegue:
method has a sender
parameter. In the case of an accessory action, this parameter is a UITableViewCell
. Knowing this, we can get the correct indexPath
like this:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"mySegueIdentifier"]) {
NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
... do some work...
}
}