iOS TableView非常缓慢地加载数据

Wal*_*ain 1 iphone ios ios5 ios6

我正在研究一个解析来自Web服务的数据并在表格视图中显示的项目.一切都很好,但我对tableview的表现不满意.在从Web解析数据后,我调用了重新加载数据来显示数据,但它没有立即显示单元格.它在10/15秒后显示数据.在调用重载数据之前,我已经检查了所有数据的加载.奇怪的是,如果我试图拖动桌子,它会立即显示细胞.

任何的想法?

更新

-(void)receivedCategories:(NSMutableArray *)categoryItems{
  [self.spinner stopAnimating];
  self.categories=categoryItems;
  if (self.tableView!=nil) {
    [self.tableView reloadData];
  }
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
  return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  return [self.categories count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  static NSString *CellIdentifier = @"CategoryCell";
  CategoryCell    *cell           = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  cell.category                   = [self.categories objectAtIndex:indexPath.row];
  return cell;
}
Run Code Online (Sandbox Code Playgroud)

CategoryCell.m

@implementation CategoryCell

- (void)setCategory:(Category *)category
{
  [self.categoryTitle setText:category.title ];
  [self.categorySubTitle setText:category.description];
}

@end
Run Code Online (Sandbox Code Playgroud)

Rok*_*arc 24

看来你没有[self.tableView reloadData];从主线程调用,这可能是你的问题的原因.

你可以尝试:

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
Run Code Online (Sandbox Code Playgroud)

另请查看此处接受的答案以获取更多信息.

  • 在Swift中我解决了这个问题,如下所示:dispatch_async(dispatch_get_main_queue(),{//在主线上进行自我调整self.tableView.reloadData()}) (5认同)