UIRefreshControl 再次拉动时出现多次
Posted
技术标签:
【中文标题】UIRefreshControl 再次拉动时出现多次【英文标题】:UIRefreshControl appears multiple times on pulling again 【发布时间】:2014-07-24 04:05:50 【问题描述】:我的tableView
中有一个UIRefreshControl
,当我拉出它时,就会调用服务。问题是,如果我已经拉过一次并且正在调用服务,同时,我再次拉动它,我会看到另一个刷新控件。
这是我用来定义刷新控件的代码:
// Pull To Refresh Code
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
[self.myTableView addSubview:self.refreshControl];
我的handleRefresh
方法:
-(void) handleRefresh:(UIRefreshControl *) refreshControl
[self performSelector:@selector(updateBlogList)];
在我的updateBlogList
方法中,我正在调用我的服务,当我得到响应时,我使用[self.refreshControl endRefreshing]
。
如果我在这条线执行之前再次拉动,屏幕上基本上有两个刷新控件。
我该如何解决它。
【问题讨论】:
【参考方案1】:在每次拉取时,您都会使用该行创建一个新的refreshControl
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
这就是为什么每次拉取时都会创建一个新的,并且它也会添加到子视图中。也许您应该对其使用延迟初始化以确保如果该对象已经创建,您将不会创建一个新对象:
if (self.refreshControl == nil)
self.refreshControl = [[UIRefreshControl alloc] init];
通过这种方式,它会立即分配给属性,因此您不需要 self.refreshControl = refreshControl
行。
或者,您可以设置一个标志并在调用[self.refreshControl endRefreshing]
时取消设置它,如果设置了标志,则拉动刷新代码根本不会执行。
【讨论】:
以上是关于UIRefreshControl 再次拉动时出现多次的主要内容,如果未能解决你的问题,请参考以下文章