2011-04-22 68 views
0

我試圖顯示活動指標,同時沉重的用戶界面更新。(iphone)如何在用戶界面更新過程中顯示活動指示燈?

我最初的失敗嘗試是在廠景​​

  1. 顯示活動指示器
  2. pushViewController(此的viewController的創建視圖需要很長的時間)時,廠景的viewDidDisappear(當pushViewController的推動動漫 發生
  3. ),隱藏活動指示器

即使我在pushViewController之前調用了「顯示活動指示符」,問題仍然存在,因爲在創建正在推送的viewController視圖時出現沉重的用戶界面,所以未顯示活動指示符。

我改變策略如下,它的工作原理,我不明白爲什麼。

  1. pushViewController
  2. 展示在的viewController的viewDidLoad中
  3. 做繁重的UI裝載在viewDidAppear和隱藏指示器

活動的指標我下的印象是,指標沒理由第一種方法顯示的原因是UI過程繁重。
請參考鏈接討論。 (iphone) showing activity indicator before heavy ui updating

如果隊列上的UI更新太多會導致UI更新延遲(指示符未顯示),爲什麼第二種方法有所作用?

我知道viewDidLoad只有在視圖被創建時纔會被調用。
當在屏幕上查看實際顯示出來(因此可以多次調用)

viewDidAppear被調用。但有這可以解釋爲什麼使用viewDidAppear的第二個辦法,我的情況下工作的根本區別?

是否有除所謂的主線程之外的UI更新線程? 或者主線程是UI更新線程?

謝謝

回答

0

首先,我想確保您正在更新主線程上的UIKit UI。這是必須的,除非你說使用主線程,否則你不應該在使用UIKit時指定線程,但我認爲這是多餘的。

我會在viewWillAppear中啓動活動指示器。然後在viewDidLoad中加載其他所有內容。

+0

感謝您的建議,是的,我正在主線程中進行UI更新。我以爲viewWillAppear會被多次召喚出一次觀看。 ViewDidAppear被調用一次。爲什麼viewWill出現更好的選擇?我應該維護一個布爾變量不加載多個指標視圖,因爲viewWillAppear被多次調用? – eugene 2011-04-22 19:59:02

+0

使用if語句來查看活動指示符是否具有動畫效果。如果不是,那麼動畫。您的活動指示器應該已經創建好了,如果它在筆尖中,它真的很有用。當您調用viewWillAppear(或viewDidAppear,如果更適合您的應用程序時),並且在UI完全加載時,將其設置爲可見和動畫,並在UI完全加載時,將活動指示器設置爲停止動畫和不可見。 – 2011-04-22 21:06:37