Авиад Бен Дов и 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 , который имеет очень простой интерфейс на основе категорий.