在 iOS 7 上的 UITableView 上指示加载活动的正确方法是啥?

Posted

技术标签:

【中文标题】在 iOS 7 上的 UITableView 上指示加载活动的正确方法是啥?【英文标题】:What's the proper way to indicate loading activity on UITableView on iOS 7?在 iOS 7 上的 UITableView 上指示加载活动的正确方法是什么? 【发布时间】:2013-10-31 04:55:05 【问题描述】:

我知道我可以在任何时候使用SVProgressHUD 向用户展示正在整个屏幕上加载的内容。

但是,在 ios 7 设计指南中,有没有一种传统方式可以在 UITableView 内显示活动指示器或微调器。我认为 SVProgressHUD 在 iOS 7 中只是丑陋,我认为必须有更好的解决方案。

Apple 的做法是什么?

【问题讨论】:

【参考方案1】:

苹果的做法是在表格视图的顶部显示活动指示器。

您可以检查 Native Mail 应用程序的工作情况。

实施 -

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;

您可以使用这些方法开始/停止刷新。

--开始刷新 – 结束刷新

【讨论】:

要进一步详细说明,请查看this stack overflow question 上接受的答案,因为它提供了一个完整的示例。【参考方案2】:

我也考虑了这个问题,并提出了以下解决方案:

通过利用表格视图的backgroundView 属性,您可以设置一个专用的背景视图,该视图可以按照您想要的方式设置样式。

    在 Storyboard 中创建一个 UIViewController 并按照您想要的方式设置视图的样式。我的建议:一个 UIActivityIndi​​catorView 和一个 UILabel 水平和垂直居中。 为视图控制器设置故事板 ID。

    viewDidLoad 方法中粘贴以下代码,将创建的视图分配给表格视图的背景。确保将标识符替换为之前设置的任何内容。

    self.tableView.backgroundView = ((UIViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"yourStoryboardID"]).view;
    self.tableView.backgroundColor = [UIColor whiteColor];
    

    当您准备好隐藏加载视图时,只需执行以下操作:

    self.tableView.backgroundView.hidden = YES;
    

我希望这会有所帮助。

【讨论】:

来自 tableView.backgroundView 的文档:“您必须将此属性设置为 nil 才能设置表格视图的背景颜色。”

以上是关于在 iOS 7 上的 UITableView 上指示加载活动的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 上的分组 UITableView 故障

iOS 7 上的 -[UITableView layoutSublayersOfLayer:] 中的断言失败

如何阻止 UITableView 在 iOS 7 中剪辑 UITableViewCell 内容

UITableViewCell indexPathForCell:iOS 7 上的应用程序崩溃

iOS UI控件7(UITableView)

iOS 7 UITableView 在 UINavigationBar 下扩展