【问题标题】:UIRefreshControl appears multiple times on pulling againUIRefreshControl 再次拉动时出现多次
【发布时间】: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]

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

我该如何解决它。

【问题讨论】:

    标签: uitableview pull-to-refresh uirefreshcontrol


    【解决方案1】:

    在每次拉取时,您都会使用该行创建一个新的refreshControl

    UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
    

    这就是为什么每次拉取时都会创建一个新的,并且它也会添加到子视图中。也许您应该对其使用延迟初始化以确保如果该对象已经创建,您将不会创建一个新对象:

    if (self.refreshControl == nil) {
        self.refreshControl = [[UIRefreshControl alloc] init];
    }
    

    通过这种方式,它会立即分配给属性,因此您不需要 self.refreshControl = refreshControl 行。

    或者,您可以设置一个标志并在调用[self.refreshControl endRefreshing] 时取消设置它,如果设置了标志,则拉动刷新代码根本不会执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-20
      • 1970-01-01
      • 2015-04-01
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      相关资源
      最近更新 更多