Я использую AFNetworking для загрузки некоторых данных из API, чтобы обновить UITableView. Я бы хотел, чтобы контроллер обновления отражал это как таковое.
Пользователь тянет вниз и появляется колесо обновления
Вызов API выходит (асинхронный вызов)
Вызов API возвращает успех или ошибку
UITableViewController завершает обновление, перезагружает данные, и колесо обновления исчезает
Поэтому я добавляю элемент управления обновлением в viewDidLoad моего пользовательского UIViewController (мое табличное представление является подвидом этого основного представления), как показано ниже:
//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]
, это отправляет асинхронный вызов API через модуль AFNetworking, вызывая завершенный метод моего контроллера представления, когда это сделано)
-(void)loadSubscriptions{
updated = YES;
[connections asyncCall:self];
}
Завершенные методы контроллеров представления выглядят так
-(void)asyncDone(id)responseObject{
tableData = responseObject;
NSLog(@"Yay, I'm done!");
}
К сожалению, управление обновлением завершается, конечно же, в ту же минуту, когда асинхронный вызов отправляется, а не когда он завершается, оставляя меня без обновленных данных. Как я могу заставить эту штуку немного повиснуть, пока асинхронный вызов не будет фактически завершен?