2009-03-03 110 views
1

我的UITabBarController的一個選項卡需要一些時間才能顯示。在UITabBarController選項卡選擇之前添加「現在載入」?

在viewcontroler完成其工作之前顯示「正在加載」的最佳方式是什麼?

我試着在選項卡的viewController的viewDidLoad方法中設置一個「現在正在加載」的視圖,然後我在viewDidAppear中進行工作,設置一個標記,以便在下次通過viewDidAppear再次執行該工作。

但是,我從來沒有看到「現在加載」視圖...一些優化必須完成 - 在TabBarControllerDelegate didSelectViewController之前調用viewcontroller的viewDidAppear。

是否有一個UITabBarController機制,允許在viewcontroller顯示之前顯示佔位符視圖?

任何想法?

謝謝你 - 馬特

回答

1

在這裏使用的方法是這樣的:

  1. 提出了一個「加載視圖」在您的 控制器的viewWillAppear:viewDidLoad:方法
  2. 然後,產生一個新的線程做 實際裝載(或任何時間 消耗過程中,你在做什麼)
  3. 完成後,發送消息到 控制器(例如使用委託 模式)在 「加載」完成
  4. 最後,刪除加載視圖和 讓用戶進行

這樣做,這樣讓你的應用程序界面仍然可用,即使特定視圖控制器忙。

有沒有構建方法來做到這一點,你必須自己編碼。

2

我可能是錯的,但也許你的問題是,這樣做在viewDidAppear在耗時的工作,你擋住了主事件線程,使視圖不更新直到工作完成。即你在viewWillAppear中設置了「現在加載」,但你從來沒有看到它,因爲在viewDidAppear完成時,它完成了繁重的工作。

2

NSObject的performSelector:withObject:afterDelay:方法在這裏很有用。顯示你的「請稍候」提醒或視圖,或其他,然後使用performSelector:withObject:afterDelay:開始實際工作。您的加載將被延遲到下一次執行事件循環之後,屆時用戶界面將被重新繪製。

相關問題