UITableView滚动刷新使单元格跳转

时间:2013-10-17 20:03:17

标签: objective-c uitableview pull-to-refresh uirefreshcontrol

我已经在表视图中实现了pull to refresh,这是我主视图的子视图,如下所示:

UITableViewController *tableViewController = [[UITableViewController alloc] init];
tableViewController.tableView = self.tableView;
self.refreshControl = [[UIRefreshControl alloc] init];
[self.refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
tableViewController.refreshControl = self.refreshControl;

这会更新表格,一切都很好,我遇到的问题是当我触摸桌子拖动单元格时,似乎随机向上移动到屏幕上方。当我从屏幕中间触摸并拖动时,或者如果我在细胞移回正常位置之前拉动,就会发生这种情况。这里有一些屏幕截图,以更好地描绘图片。请记住,所有这些都是在我向下拖动后拍摄的,但细胞向上移动。

应该是这样的:

enter image description here

实际上在单元格跳转后看起来像这样:

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

对于任何可能遇到此问题或类似问题的人,我找到了一种让滚动刷新工作非常顺利并且不会导致我遇到问题的方法。我现在正在使用一个实际的UITableViewController,而不是一个嵌入式UITableView,这有助于解决一些滚动问题,但我还是有一个问题,而不是动画关闭刷新图标(表格向上滑动以覆盖旋转圆圈)它只是立即关闭,看起来很刺耳。我把刷新逻辑放在后台,让它完成,然后完成刷新。我的代码结构如下:

- (void)viewDidLoad {
    //set up refreshcontrol to call my refresh method
}

- (void)refresh {
    [self performSelectorInBackground:@selector(getUpdatedInfo) withObject:nil];
}

更新了信息运行,我的TableViewController是我的类的委托,它获取刷新的信息。收到所有信息并完成更新后,我在刷新的TableViewController类中调用delegate方法,该类将接收到的数组放入表中,更新表并结束刷新。

- (void)didFinishingUpdatingWithArray:(NSArray *)array {
    //configure table sections
    //Save the data
    [self.tableview reloadData];
    [self.refreshControl endRefreshing];
}