self.tableView.indexPathForSelectedRow
повертає вибрану клітинку, але не відокремлює відправницьку клітинку, наприклад, клітина відправника не обрана (додаткова дія), або у випадку множинного вибору. Найкращий спосіб отримати indexPath для відправника Segue:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
__auto_type itemViewController = (id<ItemViewController>)segue.destinationViewController;
itemViewController.senderIndexPath = [self.tableView indexPathForCell:sender];
}
У Свіфті:
protocol ItemViewController {
var senderIndexPath : IndexPath? { get set }
var selectedIndexPaths : [IndexPath]? { get set }
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let cell = sender as? UITableViewCell,
var itemViewController = segue.destination as? ItemViewController {
itemViewController.senderIndexPath = tableView.indexPath(for: cell)
itemViewController.selectedIndexPaths = tableView.indexPathsForSelectedRows
}
}