Uitableview 再次拉动时,UIRefreshControl会出现多次
我在我的Uitableview 再次拉动时,UIRefreshControl会出现多次,uitableview,pull-to-refresh,uirefreshcontrol,Uitableview,Pull To Refresh,Uirefreshcontrol,我在我的表视图中有一个UIRefreshControl,当我拉它时,服务被调用。问题是,若我拉了一次is,服务被调用,同时,我再次拉它,我会看到另一个刷新控件 以下是我用来定义刷新控制的代码: // Pull To Refresh Code UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init]; [refreshControl addTarget:self action:@selector(handleRefresh
表视图中有一个UIRefreshControl
,当我拉它时,服务被调用。问题是,若我拉了一次is,服务被调用,同时,我再次拉它,我会看到另一个刷新控件
以下是我用来定义刷新控制的代码:
// 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]
若我在这行执行之前再次拉,屏幕上基本上有两个刷新控件
我怎样才能修好它 每次拉动时,您都会使用该行创建一个新的refreshControl
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
这就是为什么每次拉拽时都会创建一个新的拉拽,并且它也会添加到子视图中。也许您应该对其使用延迟初始化,以确保如果对象已经创建,则不会创建新对象:
if (self.refreshControl == nil) {
self.refreshControl = [[UIRefreshControl alloc] init];
}
通过这种方式,它会立即分配给属性,因此不需要self.refreshControl=refreshControl
行
或者,您可以设置一个标志,并在调用[self.refreshControl endRefreshing]
时将其取消设置,如果设置了该标志,则根本不会执行拉入刷新代码