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