2012-11-27 82 views
0

如何在tableView加載時運行一些代碼。這是我認爲可能的工作:如何在tableView加載時運行一些代碼?

while ([self.tableView reloadData]) { 
    do something 
} 

我想有而表加載一個UIActivityIndi​​cator運行,然後將數據加載後消失。

感謝您的幫助

+0

你必須提供更多的上下文。負載在哪裏發生?在表控制器的'viewDidLoad'方法?您應該在實際加載開始之前啓動活動指示器,這應該在後臺線程中進行。 – NikosM

回答

1

不能完全確定,但它看起來像你可以這樣做:

activityIndicator.hidesWhenStopped = true; 
[activityIndicator startAnimating]; 

[tableView reloadData]; 

[self performSelector:@selector(updateFinished) withObject:nil afterDelay:0]; 

其中updateFinished只是調用

[activityIndicator stopAnimating]. 

如果我沒看錯的,你是做在主線程上的一切。每個線程都有它的運行循環,用戶的方法,動畫,輸入處理,定時器和類似的東西在循環中執行。在執行某個用戶代碼的時候,調用reloadData會調度在方法結束後要執行的表動畫,而不是使用延遲爲0的performSelector,您將調度活動指示符動畫以結束。

2

如果你只是想有一個活動的指標運行,而表是裝:

[indicator startAnimating]; 
[self.tableView reloadData]; 
[indicator stopAnimating]; 

那假設你有一個UIActivityIndi​​cator稱爲指標及其hidesWhenStopped屬性設置爲是。

如果你想要做一些其他種類的工作,你最有可能需要做的工作,在一個單獨的線程,調度隊列等

相關問題