-1

我创建了一个视图控制器,并添加了一个表视图作为子视图来显示我从 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];了拆分视图中任何单击对象的回调函数。

4

2 回答 2

0

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

于 2013-01-02T15:35:33.267 回答
0

可以在View的方法中设置scrollEnabled属性。tableViewviewDidLoad

于 2012-12-31T21:57:27.357 回答