2011-03-21 16 views
1

我有一個有四個選項卡的應用程序。我有四個UINavigationControllers,通過設置每個控制器的TabBarItem屬性,然後將控制器添加到UITabBarController,每個UINavigationController綁定到UITabBarController。這都是標準的iOS票價。當UITabBarController中的某個特定項目被選中時,關閉「加載」UIView的任何想法?

其中一個選項卡加載了一個UITableView,它顯示來自遠程Web服務的一些數據。由於Web服務調用通常需要大約1.5秒來完成和反序列化,因此當選擇相應的選項卡時,我想顯示一個「載入」UIView文本「Loading ...」。我已經試過這幾個方法:

  • 指派代表到上的UITabBarController的ViewControllerSelected事件,並檢查以確保所選擇的控制器是一個我很感興趣,於是我試着顯示「加載」UIView。這一切都發生在AppDelegate中;

  • 覆蓋控制器本身上的ViewWillAppear和ViewWillDidAppear方法。在ViewWillAppear方法中顯示LoadingHUDView並隱藏在ViewDidAppear方法中。

在兩種情況下:

  1. 「加載」的UIView是一個局部變量(低熱值),並已建立與我想要的文字。
  2. lhv.SharedApplication.KeyWindow.Add(lhv);
  3. lhv.StartAnimating(); (UIView包含一個UIActivityIndi​​catorView)
  4. 執行服務調用並刷新UITableView
  5. lhv.StopAnimating();
  6. lhv.RemoveFromSuperview();

(是的,我知道我不需要使用lhv.SharedApplication.KeyWindow在AppDelegate中,因爲我提供給我的地方「窗口」成員。)

的問題是,直到UINavigationController呈現其視圖之後,「加載」UIView纔會呈現。一旦UITabBarController被點擊,我希望立即顯示LoadingHUDView。我也嘗試過使用InvokeOnMainThread(),但沒有運氣。

任何想法?

回答

2

>。 <想通了。只需要在ViewWillAppear或ViewDidAppear開始的新線程中加載加載UIView。然後,只需通過從超級視圖中刪除視圖,在相應的方法結束時執行清理。早就應該想到那個了! D'哦!

0

獨立聲明微調;並添加 MyView.addsubview(_spinner);

相關問題