這是我的問題......我正在對我正在使用的服務進行異步調用,它將搜索結果返回給我。完成後,它重新載入我的表,並完成異步。問題是,當我在異步調用完成之前嘗試在我的表視圖上滾動時,表格失去了所有滾動視圖所具有的流暢感。我的意思是,當你放開卷軸而不是繼續前進,慢慢停下來時,只要你放開,它就會停下來。恢復流體感覺的唯一方法是一直滾動到UITableView的頂部或底部並稍微過去,然後就可以了。當我在異步重載數據期間滾動時,爲什麼我的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:自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;
}
解決方案:
我最終做的是鎖定桌子和所有UI元素,直到完成調用。也許不是最好的解決方案,但它的效果不會那麼差。
非常感謝!這非常有幫助。 – 2011-06-01 16:38:54