将 UIRefreshControl 添加到 UIScrollView
Posted
技术标签:
【中文标题】将 UIRefreshControl 添加到 UIScrollView【英文标题】:Adding UIRefreshControl to UIScrollView 【发布时间】:2015-10-14 15:36:35 【问题描述】:我只是想简单地将 UIRefreshControl 添加到 UIScrollview - 出于某种原因,当我拉下滚动条时,什么也没有发生。没有ActivityView,没有动作。它只是像什么都没发生一样反弹回来。
这是我目前所拥有的:
- (void)viewDidLoad
[super viewDidLoad];
[scroller setAutoresizesSubviews:YES];
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[self.scroller addSubview:refreshControl];
//populate the scroller with data
[self grabData];
-(void)handleRefresh:(UIRefreshControl *)refresh
// Reload my data
[self grabData];
【问题讨论】:
scroller 和 self.scroller 是否附加到界面构建器中的同一个滚动视图? 是的,它们已附加 可以展示一下类的界面吗? 【参考方案1】:这个应该有用
UIRefreshControl *refreshControl;
- (void)viewDidLoad
[super viewDidLoad];
refreshControl = [[UIRefreshControl alloc]init];
[self.scrollView addSubview:refreshControl];
[refreshControl addTarget:self action:@selector(refreshData) forControlEvents:UIControlEventValueChanged];
- (void)refreshData
//TODO: reload your data and end refreshing
[refreshControl endRefreshing];
如果您正在获取一些数据,在您完成接收数据后,您应该致电endRefreshing
和reloadData
【讨论】:
【参考方案2】:对我有用的是让 refreshControl 成为类的变量,然后使用它。
例如:
class className: UIViewController
var refreshControl:UIRefreshControl!
override func viewDidLoad()
super.viewDidLoad()
self.refreshControl = UIRefreshControl()
self.refreshControl.addTarget(self, action: Selector("getPrint"), forControlEvents: UIControlEvents.ValueChanged)
refreshControl.tintColor = UIColor.whiteColor()
self.refreshControl.backgroundColor = UIColor.clearColor()
self.refreshControl?.endRefreshing()
self.scrollView.addSubview(self.refreshControl)
【讨论】:
以上是关于将 UIRefreshControl 添加到 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章
类似于 UIRefreshControl 将隐藏的 UIView 添加到 UITableView