2013-04-17 77 views
0

我有一個tableview和-(void)tableView: didSelectRowAtIndexPath:我從sqlite數據庫提取記錄並顯示在另一個detailViewController的tableview.While獲取記錄UI卡住了。我必須顯示detailViewController的空行tableView的行上有活動指示器,直到所有記錄都不從數據庫中獲取。但問題是,當我調用函數從detailViewController的-(void)viewDidLoad的數據庫中提取記錄時,主運行循環被阻止,黑色出現屏幕。 我讀過的地方不好,在後臺線程上執行數據庫操作。所以我不能在後臺線程上執行讀取操作。 解決這個問題的最好方法是什麼?當從數據庫獲取記錄時顯示空的tableview

如何在detailViewController的視圖得到更新的時候顯示記錄。是否有任何好的designPattern或者在後臺線程上執行數據庫操作是否正確?在viewDidAppear中執行數據庫操作等繁重操作也很好嗎?

在此先感謝

回答

0

viewWillAppear方法從數據庫中獲取記錄,並把它變成NSMutableArrayNSLog(@"%@",myMutableArr);檢查它,如果你有那麼正確的數據放在UITableView

參考,This TutorialThis is official document.

0

我覺得在不同的線程上加載數據庫不是問題。但是,如果要使用數據庫結果更新表視圖,請使用方法performSelectorOnMainThread。由於UI更新應始終在主線程中。

來自數據庫的結果是需要表視圖嗎?或只爲detailView? 如果僅用於detailView,爲什麼不在detailView出現時查詢數據庫?

+0

是的detailViewController的加載它的tableview與這些結果 – user2070826

+0

然後,你可以在一個單獨的線程查詢數據庫,管理viewDidAppear和卸載方法中的線程,並更新tableview時間,當你閱讀一些或所有你需要的數據。我做到了這一點,它在我的應用程序https://itunes.apple.com/app/id483162196中完美運行。 – karim

相關問題