我的UIRefreshControl
中有tableView
,当我拉它时,会调用服务。问题是,如果我已经拉了一次并且正在调用服务,同时,我再次拉它,我看到另一个刷新控制。
以下是我用来定义刷新控件的代码:
// 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]
。
如果我在执行此行之前再次拉动,屏幕上基本上有两个刷新控件。
我如何解决它。
答案 0 :(得分:3)
每次拉动时,您都会使用
行创建一个新的refreshControl
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
这就是为什么每次拉动时都会创建一个新的,并且它也会添加到子视图中。也许您应该使用延迟初始化来确保如果已经创建了对象,那么您将不会创建新对象:
if (self.refreshControl == nil) {
self.refreshControl = [[UIRefreshControl alloc] init];
}
这样就可以立即分配给酒店,因此您不需要self.refreshControl = refreshControl
行。
或者,你可以设置一个标志,并在调用[self.refreshControl endRefreshing]
时取消设置它,如果设置了标志,则根本不会执行Pull to Refresh代码。