点击单元格或其他UI元素后UITableView滚动中断



我已经创建了一个视图控制器,并添加了一个表视图作为子视图来显示我从web服务异步获取的数据。最初,视图显示一个空表。获取数据后,对其进行排序,然后将其存储在保存表视图数据的数组中。我在tableView上调用reloadData,数据就正确显示了。在这个时刻,表视图按照它应该的方式工作(滚动按预期工作)。然而,只要我点击一个单元格,它带我到一个详细视图控制器(模态呈现),当我返回表视图滚动到顶部时,滚动被禁用(内容仍然反弹)。数据仍然在那里,如果我拖上表格单元格,更多的显示,但一旦我放开,就会从屏幕上弹回来。

使问题更加复杂的是,我的自定义分屏视图控制器用于更改表视图中显示的内容。它通过手势显示和隐藏自己,按下其中的一个对象将重新获取主表视图中的数据。当服务完成数据加载并且表数据已经刷新时,表将按照预期再次滚动。

该应用仅支持iOS 6.0及以上版本的手机设备类型。

下面是一些从web服务检索数据的代码:

- (BOOL) getPatientVisits {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
    NSDictionary *response = [[HMWebServiceFacade defaultFacade] getVisitListingForPatientId:appDelegate.selectedPatientId withUserCredential:appDelegate.usernamePasswordHash];
    dispatch_async(dispatch_get_main_queue(), ^{
        if ([[response objectForKey:@"status"] isEqualToString:@"OK"])
        {
            patientVisits = [[HMCommonUtils commonUtils] sortedArrayOfVisits:[response objectForKey:@"visits"]];
        }
        else if ([response objectForKey:@"RequestError"])
        {
            [[HMCommonActions standardActions] displayErrorAlertMessage:[response objectForKey:@"RequestError"]];
        }
        else
        {
            [[HMCommonActions standardActions] displayErrorAlertMessage:@"There were no visits for your loved one." withTitle:@"Sorry"];
            patientVisits = nil;
        }
        [visitsTable reloadData];
        [self viewWillAppear:YES];
    });
});
return false;
}

在viewDidLoad中,我调用[self getPatientVisits];以及在分屏视图中单击任何对象的回调函数。

可以在View的viewDidLoad方法中设置tableViewscrollEnabled属性。

问题出在自动布局和iOS 6的表视图标头上。在- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section中使用约束会导致这种不稳定的行为

最新更新