Обновление пользовательского интерфейса при изменении модели - PullRequest
1 голос
/ 14 ноября 2009

У меня есть серия элементов UITableViewCell с различными UIControls для установки значений модели.

Когда я делаю изменения в модели, у меня возникают трудности с поиском способа обновления UITableViewCell, который отображает вычисленное свойство из модели.

Я поместил модель в AppDelegate и получил к ней доступ напрямую из RootViewController. В каждой реализации UITableViewCell у меня есть метод, который обновляет модель при внесении изменений.

Но тогда я не уверен, как обновить дисплей, чтобы показать обновление. (Я пытался подключить один и тот же элемент к двум действиям. Но порядок выполнения действий не согласован, поэтому сначала выполняется перезагрузка дисплея, а затем обновляется модель).

Любая помощь будет принята с благодарностью.

Спасибо ..

Ответы [ 2 ]

1 голос
/ 14 ноября 2009

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

Попробуйте использовать только одно действие, которое сначала обновляет модель, а когда это происходит, обновляет дисплей. Мне кажется, что ваша проблема заключается в синхронизации этих двух, поэтому я предлагаю рассмотреть возможность вызова функции обновления дисплея после функции обновления модели.

0 голосов
/ 14 ноября 2009

Если вы используете NSFetchedResultsManager, довольно легко реализовать делегированные обратные вызовы для вашего UITableViewController. В частности:

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller;
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath;
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type;
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller;

Посмотрите на пример реализации RootViewController в Базовых книгах данных .

Таким образом, вы не выполняете полную перезагрузку данных, вы просто изменяете измененные части.

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