【发布时间】:2012-10-14 17:59:29
【问题描述】:
我正在开发一个应用程序,我想从远程 Web 服务中提取数据并填充 UITableView。当我获得新数据时,我希望保留当前可见的单元格并在其上方添加新数据,就像大多数 Twitter 客户端一样。我的加载方法目前如下所示:
- (void)loadPostsInBackground
{
NSURL *url = [NSURL URLWithString:@"[URL]"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation;
operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id jsonObject) {
[self createPostsFromDict:jsonObject];
[self.refreshControl endRefreshing];
[self.tableView reloadData];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id jsonObject) {
NSLog(@"Received an HTTP %d", response.statusCode);
NSLog(@"The error was: %@", error);
}];
[operation start];
}
这可行,但它会使用新数据更新当前可见的单元格。所以我想要的是,获取新数据,将其添加到当前可见的单元格上方(或留在当前可见的单元格)。最好的方法是什么?
注意:我需要 iOS6。
【问题讨论】:
-
你还在用fetchedResultsController吗?我不确定这是否可以满足您的要求。 createPostsFromDict 是否会重新调整可以用来填充表的数组?
-
是的,还在使用。通过将新帖子的数量添加到实例变量中,然后在加载新行后滚动到该行而不使用动画来使其工作。但它并不完美或漂亮,但它确实有效。 createPostsFromDict 不返回数组,它只是将帖子添加到我的 managedObjectContext。
标签: objective-c ios uitableview nsfetchedresultscontroller uirefreshcontrol