Прежде всего, зачем вам нужно загружать 2k строк одновременно? Почему бы тебе не сделать это лениво?
Во-первых, при загрузке табличного представления вы должны использовать свой источник данных только для подсчета количества отображаемых строк, запрашивая основные данные, чтобы получить только число, и поэтому ваше табличное представление будет готово показать все необходимые клетки.
Во-вторых, загружайте из базовых данных только тот контент, который вам нужен, то есть только контент на экране. Представьте, что если пользователь перетаскивает и прокручивает представление таблицы очень быстро, многие ячейки будут загружены без необходимости в этом. Правильнее всего загружать только видимые ячейки, то есть те, которые будут видны, когда процесс прокрутки остановится.
Посмотрите на этот пример от Apple, как лениво загружать ресурсы для табличного представления: http://developer.apple.com/iphone/library/samplecode/LazyTableImages/Listings/Classes_RootViewController_m.html#//apple_ref/doc/uid/DTS40009394-Classes_RootViewController_m-DontLinkElementID_12
Это для изображений, но вы можете сделать то же самое для извлечения объектов.
Делая это лениво, вам не понадобится индикатор активности.
Кстати, возвращаясь к проблеме с индикатором активности, вам может потребоваться обновить ячейку:
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
//-- start activity indicator (will be stopped when view disappears)
UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];
[cell.contentView addSubview:m_activityIndicator];
[m_activityIndicator startAnimating];
[cell setNeedsDisplay];
return indexPath;
}
Приветствия