【发布时间】:2014-08-28 20:20:59
【问题描述】:
我正在使用 AFNetworking 从 API 加载一些数据以刷新 UITableView。我希望刷新控制器能够反映这一点。
用户下拉,刷新轮出现
API 调用结束(异步调用)
API 调用返回成功或错误
UITableViewController 完成刷新,重新加载数据,刷新轮消失
所以我在自定义 UIViewController 的 viewDidLoad 中添加了一个刷新控件(我的表格视图是这个主视图的子视图),如下所示:
//Set up refresh controller
tableController = [[UITableViewController alloc]init];
tableController.view = self.subscriptionsTable;
UIRefreshControl* refresh = [[UIRefreshControl alloc]init];
[refresh addTarget:self action:@selector(loadSubscriptions) forControlEvents:UIControlEventAllEvents];
tableController.refreshControl = refresh;
然后我有我的刷新方法:(所有[connections asyncCall:self] 所做的就是通过 AFNetworking pod 向 API 发送异步调用,完成后调用我的视图控制器的已完成方法)
-(void)loadSubscriptions{
updated = YES;
[connections asyncCall:self];
}
视图控制器完成的方法如下所示
-(void)asyncDone(id)responseObject{
tableData = responseObject;
NSLog(@"Yay, I'm done!");
}
不幸的是,刷新控制当然是在异步调用发送的那一刻完成的,而不是在它完成的时候,这让我没有更新的数据。在异步调用实际完成之前,我怎样才能让那个东西挂起一段时间?
【问题讨论】:
标签: objective-c uitableview ios7 asynchronous uirefreshcontrol