Обновление ячейки в UITableViewController после изменений в DetailViewController - PullRequest
1 голос
/ 25 января 2011

У меня довольно простая установка: RootViewController (который является UITableViewController). Каждая ячейка в ней показывает некоторую статистику для другого человека. Вы можете нажать на любую из этих ячеек, чтобы добавить DetailViewController (UIViewController) и изменить статистику (которая хранится в объекте модели). После того, как пользователь закончит изменение статистики для этого человека, он нажимает кнопку «Назад», вызывая вызов popViewControllerAnimated.

Мой вопрос таков: как лучше всего узнать в RootViewController, что статистика для этого игрока была изменена, и соответствующим образом обновить ячейку? Нужно ли записывать в RootViewController, какая ячейка была нажата, и затем вызывать соответствующий setNeedsDisplay после завершения DetailViewController? И если да, то каким способом я должен это сделать? viewWillAppear

Или есть более хороший способ? Кажется, это было бы довольно распространенной задачей, и я упускаю что-то очевидное.

1 Ответ

2 голосов
/ 25 января 2011

Это зависит от того, как спроектирована ваша модель и используете ли вы базовые данные.

Основной принцип состоит в том, чтобы наблюдать свойства объектов вашей модели, которые могут измениться в подробных видах.Когда что-то меняется в подробном контроллере, как-то пометьте его ячейку таблицы как грязную.Затем, когда табличное представление снова станет видимым, получите измененную ячейку с помощью [tableView cellForRowAtIndexPath:] и перенастройте ячейку.Метод cellForRowAtIndexPath: будет легко возвращать nil, если ячейка не видна, что не позволит вам тратить время на обновление ячеек, которые в ней не нуждаются.

Если вы используете Core Data (и вы, вероятно,должно быть), NSFetchedResultsController делает почти всю эту работу за вас.Он будет наблюдать за объектами вашей модели и отправлять сообщение controller:didChangeObject:atIndexPath:forChangeType:newIndexPath: своему делегату для каждой измененной ячейки.Затем вы можете внести необходимые изменения в табличное представление.

Я рекомендую создать новый проект Xcode, используя шаблон Навигационное приложение с Использовать базовые данные для хранения галочка отмечена галочкой.Шаблон имеет хорошую реализацию по умолчанию вышеупомянутого шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...