【问题标题】:iOS: adding activity indicator in the right place (Master-View-Controller)iOS:在正确的位置添加活动指示器(Master-View-Controller)
【发布时间】:2015-02-09 16:06:35
【问题描述】:

我从 XCode 中的 MasterViewController / DetailViewController 模板开始。我添加了一个调用,我从 Web (JSON) 获取数据并将用它填充数组。

我想在 MasterViewController 中添加一个活动指示器,并在加载数据时显示它。

但是我不确定如何进行此操作以及 在哪里 我应该把它放在哪里。我正在考虑两种选择:

  1. 创建一个只有一个活动指示器的自定义单元格并显示 加载数据前仅此单元格。
  2. 以编程方式将视图上的活动指示器添加为子视图 并且仅在数据加载时显示。

任何替代建议? Apple 对此有何设计指南?

这是storybuilder中显示的项目:

【问题讨论】:

  • 我认为 subview 中没有必要,在大多数应用程序中,活动指示器都在 tableview 本身上(如果它不是自定义和花哨的),我也会注意数据到达需要多长时间。例如,如果您有图像,则可以在图像顶部放置一个占位符作为活动指示符,但在您的情况下,我会使用一个活动指示符来查看表格。developer.apple.com/library/ios/documentation/UserExperience/… 其余的都取决于您。
  • 您放置在 Storyboard 上任意位置的 UIActivityIndi​​catorView 具有两个可设置的行为属性:“动画”和“停止时隐藏”。第一个是永远在线的行为;但是,第二个意味着您不必担心完成后将其隐藏。

标签: ios objective-c master-detail uiactivityindicatorview


【解决方案1】:

这是一个间接的答案,但你应该看看MBProgressHUD on GitHub

这是一个用于显示模态进度视图的好类。支持:

  1. 不确定的进度视图(表示旋转活动指示器)
  2. 确定进度视图(您可以在其中显示实际进度)
  3. 标签:
    • LabelText:HUD 的主要文本
    • DetailsLabelText:详细信息/消息文本的位置

此外,它很容易设置样式,而且我发现它比尝试添加 UIActivityIndicatorView 容易得多。

例如,这是一种将 HUD 添加到 viewUIViewController 的简单方法:

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

之后,摆脱它就像:

[hud dismiss:YES];

警告:这不是您通过UITableViewController 获得的UIRefreshControl 的直接替代品。我不确定它是否需要,但我总是使用此视图 (MBProgressHUD) 作为阻塞控件,而后台正在发生某些事情,例如异步数据加载。也就是说,在我的初始数据加载后(当我使用 MBProgressHUD 时),我会在后台执行后续数据刷新,而不会中断 UI。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    相关资源
    最近更新 更多