Просмотр таблицы - Отображать как - # Вокруг меня - Google # - в iPhone - PullRequest
0 голосов
/ 20 августа 2009

Я загружаю примерно 60-80 данных из веб-сервиса.

Но если вы видели "Вокруг меня - Google - приложение" -> У него есть tableView в качестве результата поиска -> В представлении таблицы последняя ячейка записывается как представление Больше -> При нажатии, что появляется больше данных

Я хочу реализовать тот же эффект / логику для моего приложения, но не знаю как?

Не могли бы вы мне помочь?

Ответы [ 3 ]

2 голосов
/ 20 августа 2009

Авиад Бен Дов и Rkbang предлагают несколько полезных советов. Добавление к этому:

Чтобы ответить на прикосновение к ячейке «Просмотреть больше», напишите метод tableView:willSelectRowAtIndexPath: (из протокола UITableViewDelegate) в любом объекте, который является делегатом для вашего UITableView. В этом методе сделайте вызов, чтобы загрузить больше данных, и верните nil, чтобы строка не оставалась выделенной (что более похоже на поведение кнопки):

- (NSIndexPath *)tableView:(UITableView *)tableView
  willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self loadMoreData];
    return nil;  // Don't leave this row selected.
}

В функции загрузки выполните серверный вызов, чтобы получить данные, проанализировать их и перезагрузить таблицу. Также вежливо давать индикатор занятости, пока вы ждете ответа сервера:

#import "HTTPHelper.h"

// ... later ...

- (void) loadMoreData {
  [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
  NSString* dataStr = nil;
  NSError* error = [[HTTPHelper sharedInstance]
                    synchronousGetURLAsString:@"http://server.com/mystuff"
                    replyData:&dataStr];
  [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
  if (error) {
    [self displayErrorMessage:error];
  } else {
    [self parseIntoDataSource:dataStr];
    [tableView reloadData];
  }
}

В этой последней функции я предполагаю, что метод parseIntoDataSource проанализирует ответ сервера и добавит эти данные к тому, что использует ваш класс для предоставления данных для ячеек таблицы, которые задаются tableView:cellForRowAtIndexPath:* Метод 1018 * (протокола UITableViewDataSource).

Этот код также использует HTTPHelper из библиотеки Мориарти .

Если вы хотите проанализировать XML, вы можете использовать собственный SDK NSXMLParser. Библиотека TouchXML также доступна и предлагает чуть более надежную поддержку слегка загрязненных данных (например, реального HTML, который обычно не соответствует стандартам XML). Для анализа JSON вы можете использовать json-framework , который имеет очень простой интерфейс на основе категорий.

1 голос
/ 20 августа 2009

Вы всегда можете настроить свой просмотр таблицы. Например, допустим, вы хотите показать только 25 элементов. Затем в функции numberOfRowsInSection верните 26, а в cellForRowAtrIndexPath проверьте последнюю строку. Если это последняя строка, то ее текст будет «Просмотреть больше».

Аналогично в selectedRowAtIndexPath вы можете проверить количество строк и, если это последняя загрузка, еще 25. Сохраните целочисленный индекс, который будет 1 для первых 25 и 2 для следующих 25. Таким образом, вам не придется повторно извлекать данные и опять же, тогда как вы можете хранить данные в NSMutableArray.

1 голос
/ 20 августа 2009

Сначала вам нужно сделать пейджинг в вашем приложении. Это означает, что вместо того, чтобы ваш веб-сервис возвращал все элементы, он должен возвращать только некоторые из них, добавив параметр offset, означающий, с чего начать получать результаты, и length, означающий, сколько результатов получить. Это означает, что первый вызов будет с 0, 20, второй с 20, 20, третий вызов с 40, 20 и т. Д., Если вы хотите 20 элементов на «страницу».

Затем вы добавляете интерактивный элемент в представление таблицы. Это может быть специальный раздел, возвращаемый вашим делегатом, содержащий одну строку, которая при щелчке вызывает веб-службу для следующей страницы и добавляет результат в табличное представление путем обновления внутреннего массива и использования сообщений строки вставки.

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