我可以在初始加载视图时旋转 tableview UIRefreshControl(活动指示器),而无需用户向下滑动吗?

Posted

技术标签:

【中文标题】我可以在初始加载视图时旋转 tableview UIRefreshControl(活动指示器),而无需用户向下滑动吗?【英文标题】:Can I spin a tableview UIRefreshControl(activity indicator) on initial loading of the view, without the user swiping down? 【发布时间】:2015-03-08 18:21:14 【问题描述】:

我有一个选项卡式应用程序。

应用程序从一个视图为 UITableViewController 的选项卡开始。

在应用程序初始加载时,MBProgressHUD 活动指示器用于向用户指示应用程序当前正在加载行的数据。

如果用户在任何时候想要刷新 TVC 中的数据,他们可以滑动/下拉,这将利用 TVC 顶部的 UIRefreshControl 活动指示器。

我的问题是……这在两种加载数据的形式中并不一致。

我需要选择 MBProgressHUD 或 UIRefreshControl。

我想要后者。那么有没有办法使用 UIRefreshControl 的活动指示器打开我的 TVC 的初始加载,而无需用户启动它?

【问题讨论】:

你试过UIActivityIndicatorView吗? 【参考方案1】:

使用UIRefreshControl 只需调用[self.refreshControl beginRefreshing] 即可在您的视图加载时显示刷新指示器(例如在您的viewDidAppear 中)。

这将显示刷新控件,就像用户手动拉动刷新一样。


注意:这只会在 tableView 滚动到顶部时显示控件。如果调用beginRefreshing时tableView有偏移量ios不会将tableView滚动到顶部只是为了显示刷新控件,以避免意外滚动tableview(所以如果您希望tableView滚动到顶部以确保在任何情况下都会显示 refreshControll,您必须先使用 setContentOffset: 将 tableView 滚动到顶部,然后再调用 beginRefreshing)

【讨论】:

这似乎对我不起作用。尽管 [self.tableView setContentOffset:CGPointMake(0.0,0.0)],但它没有在加载时旋转。我究竟如何使用它来实现初始加载时的刷新控制旋转? - (void) viewWillAppear: (BOOL) 动画 [super viewWillAppear: animated]; self.tableView.contentOffset = CGPointMake(0, -self.refreshControl.frame.size.height); [self.refreshControl beginRefreshing]; 【参考方案2】:
- (void) viewWillAppear: (BOOL) animated

    [super viewWillAppear: animated];

    self.tableView.contentOffset = CGPointMake(0, -self.refreshControl.frame.size.height);
    [self.refreshControl beginRefreshing];    


【讨论】:

以上是关于我可以在初始加载视图时旋转 tableview UIRefreshControl(活动指示器),而无需用户向下滑动吗?的主要内容,如果未能解决你的问题,请参考以下文章

TableView 仅在屏幕旋转后更新

像刷新一样重新加载tableview视图

TableView reloadData 没有重新加载?

根据 tableview 选择加载特定的 NIB

在加载 tableview 之前检测 iPhone 方向

在多个视图移动时更改旋转布局