2013-10-17 133 views
2

我已经实现拉动的是一个子视图我的主视图,像这样的表视图刷新:的UITableView滚动刷新,使细胞跳

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

+0

请张贴一些代码,你如何实际刷新单元格。这一行有什么意义:'tableViewController.refreshControl = self.refreshControl;' –

+0

我能感觉到你的痛苦。我很确定它与UITableViewController有关,但我没有得到刷新控制在普通的UIViewController(contentInsets搞砸了)中正常工作。你有什么更新? – manmal

+0

@manmal我确实通过在后台执行一些更新逻辑来实现它。我也切换到使用UITableViewController而不是嵌入的UITableView。我会发布一个答案,看看我的代码结构如何看起来似乎已经解决了问题。 – Made2k

回答

0

对于可能有这个问题,或者类似这样的问题,任何人我发现了一种让滚动更新的方法,能够非常顺利地工作,而不会导致我遇到的问题。我现在使用的是实际的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]; 
}