2013-03-09 61 views
1

UITableView完成后,我有一个异步过程,它更新1单元格的文本。更新UITableViewCell labelText文本问题

该更新会更改文本和颜色,例如

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

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

即使我也呼吁

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

动画将发生在相同的延迟。

有没有人有一个想法,为什么细胞需要这么长时间来更新或任何人都可以指引我如何调试正在发生的事情。没有其他代码正在运行,应用程序只是坐在那里,因此UI线程不忙。

回答

3

试试这个方法来更新UI,你使用异步过程

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

编辑

GDC Reference

dispatch_async上 调度提交块异步执行排队并立即返回。

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

+0

感谢您的快速回复。我认为,如果我想在UI的错误线程上做某些事情,我会得到一个错误。因此我打了折扣。但是这确实解决了我的问题。 – darbid 2013-03-09 10:14:05

+0

@darbid你的问题修复得很好。 :) – 2013-03-09 10:16:14

+0

@Bhargavi你能解释一下代码块来理解错误吗? – Anupdas 2013-03-09 10:38:01