2015-02-09 55 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。

相关问题