Обновление UITableView через JSON, вставка анимированных строк - PullRequest
3 голосов
/ 08 февраля 2010

У меня есть UITableView, который я загружаю через JSON. Итак, моя логика выглядит так:

  1. Получить JSON (NSOperation, обратный вызов в главный поток)
  2. В обратном вызове проанализируйте json и вставьте новые данные в массив источника данных моей таблицы.
  3. Вызовите reloadData для TableView, чтобы показать новые данные.

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

Я думаю, что я хочу использовать:

 [self.theTableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationRight];

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

Я что-то упускаю из-за того, как следует использовать этот метод? Кто-нибудь знает пример, где кто-то анимирует новые строки в TableView с помощью этого шаблона?

Обновление: в основном, я решил это благодаря руководству Бена, используя следующий подход:

  1. Начните с [self.theTableView beginUpdates];
  2. Когда я зацикливаю свои записи в JSON, вставляю их в начало моего массива, увеличивая их индекс каждый раз через цикл.
  3. Каждый раз через цикл вызывайте insertRowsAtIndexPath, например:

    NSIndexPath * indexPath; indexPath = [NSIndexPath indexPathForRow: [self.theChatEntries indexOfObject: message] inSection: 0]; [self.theTableView insertRowsAtIndexPaths: [NSArray arrayWithObject: indexPath] withRowAnimation: NO];

  4. Конец endUpdates вне цикла.

Woot.

1 Ответ

0 голосов
/ 08 февраля 2010

Вы на правильном пути; вам нужно заключить вызовы в -insertRowsAtIndexPaths: withRowAnimation: с [self.theTableView beginUpdates] и [self.theTableView endUpdates].

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