我有一個有四個選項卡的應用程序。我有四個UINavigationControllers,通過設置每個控制器的TabBarItem屬性,然後將控制器添加到UITabBarController,每個UINavigationController綁定到UITabBarController。這都是標準的iOS票價。當UITabBarController中的某個特定項目被選中時,關閉「加載」UIView的任何想法?
其中一個選項卡加載了一個UITableView,它顯示來自遠程Web服務的一些數據。由於Web服務調用通常需要大約1.5秒來完成和反序列化,因此當選擇相應的選項卡時,我想顯示一個「載入」UIView文本「Loading ...」。我已經試過這幾個方法:
指派代表到上的UITabBarController的ViewControllerSelected事件,並檢查以確保所選擇的控制器是一個我很感興趣,於是我試着顯示「加載」UIView。這一切都發生在AppDelegate中;
覆蓋控制器本身上的ViewWillAppear和ViewWillDidAppear方法。在ViewWillAppear方法中顯示LoadingHUDView並隱藏在ViewDidAppear方法中。
在兩種情況下:
- 「加載」的UIView是一個局部變量(低熱值),並已建立與我想要的文字。
- lhv.SharedApplication.KeyWindow.Add(lhv);
- lhv.StartAnimating(); (UIView包含一個UIActivityIndicatorView)
- 執行服務調用並刷新UITableView
- lhv.StopAnimating();
- lhv.RemoveFromSuperview();
(是的,我知道我不需要使用lhv.SharedApplication.KeyWindow在AppDelegate中,因爲我提供給我的地方「窗口」成員。)
的問題是,直到UINavigationController呈現其視圖之後,「加載」UIView纔會呈現。一旦UITabBarController被點擊,我希望立即顯示LoadingHUDView。我也嘗試過使用InvokeOnMainThread(),但沒有運氣。
任何想法?