UIRefreshControl再次出现多次出现

时间:2014-07-24 04:05:50

标签: uitableview pull-to-refresh uirefreshcontrol

我的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]

如果我在执行此行之前再次拉动,屏幕上基本上有两个刷新控件。

我如何解决它。

1 个答案:

答案 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代码。