2010-03-11 62 views
1

我試圖做的事情: 如果用戶正在按下一個按鈕,一個新的視圖控制器正在加載並推送到導航控制器。IPhone - 顯示等待指示燈

新的視圖控制器正在做一些硬數據庫查詢它的ViedDidLoad方法,導致一些秒加載視圖。

我試圖在視圖開始加載前顯示一個等待指示器。

如果我嘗試添加UIActivityIndi​​catorView如權利之前被分配的新視圖,顯示指標後,新觀點加載完成後我開始視圖的子視圖...

我也試圖把數據庫在ViewDidAppear方法中查詢,但具有相同的結果。

回答

0

問題是所有UI更改都必須在應用程序主線程上執行。如果有東西阻塞了主線程,那麼不會應用UI更改(在您的情況下不會顯示UIActivityIndicatorView)。

要解決您的問題,您必須在後臺線程中運行加載數據例程(例如,使用-performSelectorInBackground:withObject方法),從而將主線程留給UI。

2

看一看MBProgressHUD。這很容易實現。
主要問題是所有UI更改都必須在主線程上完成,因此所有需要相對較長時間的任務都必須在後臺線程上完成。
MBProgressHUD將爲您做到這一點。如果你想定製它,只需更改代碼。