2015-02-09 56 views
0

我從XCode中的MasterViewController/DetailViewController模板開始。我添加了一個調用,從Web獲取數據(JSON),並使用它填充數組。iOS:在正確的位置添加活動指示器(主視圖控制器)

我想在MasterViewController中添加一個活動指示器,並在加載數據時顯示它。

但是,我不確定如何進行此操作,並且其中我應該說。有兩個備選方案我想到的是:

  1. 創建一個自定義單元格與它只有一個活動的指標,並顯示 只有這個單元被裝載數據之前。
  2. 以編程方式將視圖上的活動指示器添加爲子視圖 並僅在數據加載時顯示它。

還有其他建議嗎?蘋果公司在這方面的設計準則是什麼?

這裏是在storybuilder所示的項目:

enter image description here

+0

我認爲沒有必要在子視圖中,在大多數應用程序中,活動指示器位於tableview本身(如果它不是自定義和幻想的話),我也會關注數據到達的時間。例如,如果你有一個圖像,有一種感覺可以將一個佔位符作爲活動指示器置於圖像的頂部,但在您的情況下,我會使用一個活動指示器來查看tableview.https://developer.apple.com/library/ios/文檔/用戶體驗/概念/ MobileHIG/Controls.html所有其餘的都取決於你。 – 2015-02-09 17:05:49

+0

您在故事板上放置的任何位置的UIActivityIndi​​catorView具有兩個可設置的行爲屬性:「動畫」和「停止時隱藏」。第一個是永遠在上的行爲;然而,第二,意味着你不必擔心它完成後隱藏它。 – GlennRay 2015-02-10 01:50:23

回答

0

這是一個間接的答案,但你應該看看MBProgressHUD on GitHub

這是一個很棒的類,用於顯示模態進度視圖。有支持:

  1. 不確定的進度意見(意思是紡紗活動的指標)
  2. 確定的進度視圖(在這裏你可以顯示實際進度)
  3. 標籤:
    • LabelText的:爲HUD正文
    • DetailsLabelText:詳細的地方/消息文本

此外,它很容易風格,我發現它比試圖添加一個UIActivityIndicatorView容易得多。

例如,這裏有到HUD增加的view一個UIViewController一個簡單的方法:

MBProgressHUD *hud   = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
hud.detailsLabelText  = @"Loading..."; 
hud.dimBackground   = YES; 
hud.labelText    = @"Please Wait..."; 
hud.mode     = MBProgressHUDModeIndeterminate; 

後來,擺脫它是那麼容易,因爲:

[hud dismiss:YES]; 

注意事項:這不是您用獲得的UIRefreshControl的簡易替代品。我不確定是否需要,但我始終使用此視圖(MBProgressHUD)作爲阻止控件,而後臺正在發生某些情況,例如異步數據加載。也就是說,在我的初始數據加載後(當我使用MBProgressHUD時),我在後臺執行後續數據刷新而不中斷UI。

相關問題