2013-03-09 62 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