Если вы хотите, чтобы перезагрузить ячейку, которая была выбрана, переопределения viewWillAppear:
в пользовательском подклассе UITableViewController
так:
- (void)viewWillAppear:(BOOL)animated
{
NSIndexPath *selectedRowIndexPath = [self.tableView indexPathForSelectedRow];
[super viewWillAppear:animated]; // clears selection
if (selectedRowIndexPath) {
[self.tableView reloadRowsAtIndexPaths:@[selectedRowIndexPath] withRowAnimation:UITableViewRowAnimationNone];
}
}
Примечание: Предположим, что вы оставили clearsSelectionOnViewWillAppear
набор для YES
(по умолчанию), вы должны получить индексный путь для выбранной строки перед вызовом super
, который очищает выбор.
Кроме того, solution of @ZoranSimic, чтобы просто позвонить [self.tablView reloadData]
, является приемлемым, так как он меньше кода и по-прежнему эффективен.
Наконец, возможно, лучший способ сохранить клетки вашего представления в виде таблицы в синхронизации с объектами модели, которые они представляют, чтобы сделать как NSFetchedResultsController
и использовать ключ-значение наблюдений (КВО) и/или NSNotification
информировать контроллер представления в виде таблицы модели объекты изменились, чтобы они могли перезагрузить соответствующие ячейки. Контроллер табличного вида может начать наблюдать изменения своих объектов модели в viewDidLoad
и заканчивать наблюдение в dealloc
(и где угодно вы manually unload self.view
).
я использовал этот метод, но должен был переместить код из моего didViewLoad в viewWillAppear, как они, где и стрельбы на начальной загрузке. Для меня это была большая проблема, потому что мне нужно загрузить новые данные о деталях из веб-службы. – PowerMan2015