1

完成 UITableView 后,我有一个异步进程来更新 1 个单元格的文本。

更新更改了文本和颜色,例如

cell.textLabel.text = @"new text"; 
aCell.textLabel.textColor = [UIColor blackColor];

我遇到的问题是这些东西被调用了,但细胞似乎需要几秒钟才能真正改变。

就算我也叫

[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:cIndex] withRowAnimation:UITableViewRowAnimationMiddle];

动画以相同的延迟发生。

有没有人知道为什么单元格需要这么长时间才能更新,或者任何人都可以指出我如何调试正在发生的事情的正确方向。没有其他代码在运行应用程序只是坐在那里,所以 UI 线程不忙。

4

1 回答 1

3

在使用异步进程时尝试这种方式来更新 UI

dispatch_async(dispatch_get_main_queue(), ^{
     [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:cIndex] withRowAnimation:UITableViewRowAnimationMiddle];
});

编辑

根据GDC 参考

dispatch_async 在调度队列上提交一个异步执行块并立即返回。

因此,上面的代码块将立即在主队列上异步执行以更新 UI。

于 2013-03-09T10:05:06.320 回答