Objective c UITableView滚动刷新使单元格跳转

Objective c UITableView滚动刷新使单元格跳转,objective-c,uitableview,pull-to-refresh,uirefreshcontrol,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 add

我在作为主视图子视图的表视图中实现了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;
这更新了表格,一切都很好,我遇到的问题是当我触摸表格拖动单元格时,单元格似乎在屏幕上方随机向上移动。当我从屏幕中间向下触摸和拖动时,或者在单元格移回正常位置之前拉动时,就会发生这种情况。下面是一些屏幕截图,可以更好地绘制图片。请记住,所有这些都是在我向下拖动后拍摄的,但单元格会向上移动

应该是这样的:

实际上,在细胞跳跃后看起来像这样:


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

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

- (void)refresh {
    [self performSelectorInBackground:@selector(getUpdatedInfo) withObject:nil];
}
更新的信息运行,我的TableViewController是我的类的一个代理,它获取刷新的信息。收到所有信息并完成更新后,我在刷新TableViewController类中调用委托方法,该方法将接收到的数组放入表中,更新表,并结束刷新

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

请发布一些关于如何实际刷新单元格的代码。这行的要点是什么:`tableViewController.refreshControl=self.refreshControl;'我能感觉到你的痛苦。我很确定它与UITableViewController有关,但我还没有让刷新控件在普通UIViewController中正常工作(contentInsets混乱)。你对此有什么更新吗?@manmal我确实是通过在后台执行一些更新逻辑来实现的。我还切换到使用UITableViewController,而不是嵌入式UITableView。我将发布我的代码结构现在看起来如何的答案,这似乎已经解决了问题。