2

我已经在一个表视图中实现了拉刷新,该表视图是我的主视图的子视图,如下所示:

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;

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

应该看起来像:

在此处输入图像描述

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

在此处输入图像描述 在此处输入图像描述

4

1 回答 1

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];
}
于 2013-11-07T16:29:52.490 回答