iOS 5 開発の開始から得られたソリューション アルゴリズムがあります。
1.prepareSegue で indexPath を取得する
// prepare selection info
NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
2.それを2番目のView Controllerに送信します
UIViewController *destination = segue.destinationViewController;
[destination setValue:self forKey:@"delegate"];
id object = [self.tasks objectAtIndex:indexPath.row];
NSDictionary *selection = [NSDictionary dictionaryWithObjectsAndKeys:indexPath,@"indexPath",object,@"object", nil];
[destination setValue:selection forKey:@"selection"];
3. 2 番目のビュー コントローラーは、後で indexPathを最初のコントローラーに送り返します。
// prepare selection info back
NSIndexPath *indexPath = [_selection objectForKey:@"indexPath"];
id object = _textView.text;
NSDictionary *editedSelection = [NSDictionary dictionaryWithObjectsAndKeys:indexPath, @"indexPath", object, @"object", nil];
[_delegate setValue:editedSelection forKey:@"editedSelection"];
4.したがって、2番目のView ControllerからindexPathを取得するために使用される最初のView Controllerのgetterメソッドでは、indexPathによってテーブルセルを取得し、その値を変更します
#pragma mark - Call back by destination view
-(void)setEditedSelection:(NSDictionary *)dict{
NSIndexPath *indexPath = [dict objectForKey:@"indexPath"];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
....
}