2012-04-15 59 views
1

我有一個表格視圖單元格,在點擊它時,另一個表格視圖將打開,您可以選擇某些內容作爲表格視圖單元格的值。這裏的問題是第二個表視圖中的數據很大,加載需要很長時間。所以當我點擊單元格後,屏幕就會凍結在那裏,不方便用戶使用。我想在加載第二個表格視圖時顯示一個進度條。但我找不到一個好地方補充說。我想知道應該在哪種方法中添加代碼來顯示進度條。如何在加載另一個帶有表格視圖的表格視圖時顯示進度條

回答

1

兩件事情:

  1. 我會認真考慮不同的選項,而不是一個進度條,嘗試例如像MBProgressHUD,它看起來更好,它適合你的目的。

  2. 爲了實現這一點,你必須確保你的UI線程沒有被卡住(因此應用程序不會「凍結」) - 這意味着在後臺線程上調用加載過程。啓動加載過程的方法應該啓動進度指示器,並且處理顯示加載數據的方法(一旦準備就緒)應該將其刪除。祝你好運!

2

如何在UITableViewCell附件視圖中顯示UIActivityIndi​​cator(sample image here)?

你可以用一些代碼放置...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    cell.accessoryView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
} 

你也可以做你長期服用計算在後臺線程調用

[self performSelectorInBackground:@selector(yourLongTakingMethod) withObject:nil]; 
0

如果您的應用程序凍結,這意味着你正在屏蔽UIThread,就像@stavash建議的那樣。進度條只是一個動畫圖片,它不會解決您的問題。你想要做的是把你的「數據準備代碼」放到一個線程中。簡單的方法是使用Grand Central Dispatch。要開始,請訪問this tutorial。你可以跳過前半部分,並關注實際的線程塊。這些API是dispatch_queue_create,dispatch_asyncdispatch_release

這不會產生進度條。但是,它會打開你的用戶界面。然後你可以考慮製作進度條的方法。使用一個內置的,或一些自定義動畫。甚至可以通過後臺任務在第一個tableview預加載數據。

相關問題