UITableView 的 UIRefresh 在 iOS 10 中不起作用
Posted
技术标签:
【中文标题】UITableView 的 UIRefresh 在 iOS 10 中不起作用【英文标题】:UIRefresh for UITableView do not work iOS 10 【发布时间】:2017-02-08 11:51:41 【问题描述】:我正在尝试使用 UIRefresh 用最新数据重新加载 UITableView。
self.refreshControl = [[UIRefreshControl alloc] init];
[self.refreshControl addTarget:self
action:@selector(myRefresh)
forControlEvents:UIControlEventValueChanged];
[self.tableView addSubview:self.refreshControl];
- (void)myRefresh
//Empty array which hold old data.
//calling API to get fresh data
-(void)delegatefromAPI
//array will be reloaded with data from DB
[self.tableView reloadtable];
// End the refreshing
if (self.refreshControl)
[self.refreshControl endRefreshing];
但问题是在 API 调用去获取数据之前,cellForRowAtIndexPath 被调用(自动)此时加载每个单元格为空的数组是空的。
但是我在获取数据后调用[self.tableView reloadtable];
,然后调用"[self.refreshControl endRefreshing]"
。
但是 cellForRowAtIndexPath 在 delegatefromAPI 中的 [self.tableView reloadtable]
之前被调用。
我哪里错了.....
【问题讨论】:
请看这个,***.com/a/39835854/4611751 检查我的答案你得到了你的解决方案 【参考方案1】: self.refreshControl = [[UIRefreshControl alloc] init];
self.refreshControl.tintColor = YOURCOLOR_FOR_REFRESHCONTROL;
[self.refreshControl addTarget:self action:@selector(fetchContactList) forControlEvents:UIControlEventValueChanged];
if #available(ios 10.0, *)
self.YOURTABLE.refreshControl = refreshControl
else
[self.YOURTABLE addSubview:self.refreshControl];
-(void)fetchContactList
// your API call inside that stop animation
[self.refreshControl endRefreshing];
[self.YOURTABLE reloadData];
#pragma mark - UITableview delegate method
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return YOURARRAY.count;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *simpleTableIdentifier = @"YOURCELLIDENTIFIER";
RegisteredContactTVCell *cell = (RegisteredContactTVCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
cell.lblName.text = @"VALUE";
return cell;
输出:
【讨论】:
kiran 检查我的答案和说明以上是关于UITableView 的 UIRefresh 在 iOS 10 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
拖动时删除 UITableView 和 UIRefreshControl 之间的空白
UIRefresh 控件 endRefreshing 不起作用