Обычно объекты «запоминают» вещи, сохраняя их в переменных экземпляра. Поэтому простой способ отслеживать выбранную строку - добавить переменную экземпляра и свойство типа NSIndexPath *
в контроллер списка. Затем вы можете использовать свойство для хранения indexPath, переданного методу -tableView:didSelectRowAtIndexPath:
контроллера табличного представления.
Тогда ваш контроллер списка может переопределить унаследованный -viewWillAppear: метод, чтобы отправить сообщение в табличное представление, чтобы повторно выбрать строку, как показано ниже:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// Good idea to reload the table view's cells
// in case the underlying data was changed by
// another view controller.
[[self tableView] reloadData];
// Assuming you added a selectedIndexPath property
// to your list controller...
//
if ([self selectedIndexPath] != nil)
{
// Select the row. Note that you need to be sure
// that the table view is scrolled so that the
// selected row is visible.
[[self tableView] selectRowAtIndexPath:[self selectedIndexPath]
animated:NO
scrollPosition:UITableViewScrollPositionMiddle];
// Get rid of the saved selection
[self setSelectedIndexPath:nil];
}
}