Вот моя проблема ... Я выполняю асинхронный вызов службы, с которой я работаю, которая возвращает результаты поиска мне.Когда это сделано, он перезагружает мою таблицу, и асинхронность завершена.Проблема заключается в том, что, когда я пытаюсь прокрутить свое табличное представление до выполнения асинхронного вызова, таблица теряет то плавное ощущение, которое есть во всех прокручиваемых представлениях.Под этим я подразумеваю, что когда вы отпускаете свиток, вместо того, чтобы продолжать двигаться и медленно останавливаться, он просто останавливается, как только вы отпускаете.Единственный способ восстановить ощущение текучести - это прокрутить до самого верха или низа UITableView и немного пройти, тогда все в порядке.
Вот мой код для асинхронного вызова:
__block NSMutableArray *appendMoreObjects = [[NSMutableArray alloc] init];
dispatch_async( dispatch_get_main_queue(), ^{
self.activity.hidden = NO;
appendMoreObjects = [service search:self.query from:((moreCount * 8)) until:((moreCount * 8) + 8)];
if( appendMoreObjects == nil )
{
//alert view
}
else
{
[self.allSearchResults addObjectsFromArray:appendMoreObjects];
[self updateSearchArray];
self.moreCount += 1;
}
self.activity.hidden = YES;
});
Кроме того, имейте в виду, что я использую пользовательский UITableViewCell.Если нужна какая-либо другая информация, пожалуйста, запросите ее, и я посмотрю, что я могу сделать.Заранее спасибо.
EDIT1: [self updateSearchArray] содержит [tableView reloadData]
EDIT2: я тестирую на iPod Touch под управлением 4.3.1 (8G4)
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
customCell * cell = (customCell *)[tableView dequeueReusableCellWithIdentifier:@"cell"];
if( cell == nil )
{
cell = [[[customCell alloc] initWithFrame:CGRectZero] autorelease];
}
if( indexPath.row == [self.searchResults count] && [self.searchResults count] > 0)
{
UITableViewCell *moreCell = [[[UITableViewCell alloc] initWithFrame:CGRectZero] autorelease];
moreCell.textLabel.text = @"More";
moreCell.textLabel.textAlignment = UITextAlignmentCenter;
return moreCell;
}
if( indexPath.row < [self.searchResults count] )
{
[cell formatAndInsertData:[self.searchResults objectAtIndex:indexPath.row]];
}
return cell;
}
Решение:
В действительности я закончил тем, что заблокировал таблицу и все элементы пользовательского интерфейса до завершения вызова.Возможно, не лучшее решение, но оно сработало.