Я использую следующий код для создания UIRefreshControl:
- (void) viewDidLoad
{
[super viewDidLoad];
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(doLoad) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
}
- (void) doLoad
{
dispatch_async(dispatch_get_global_queue(0, 0), ^{
// Instead of sleeping, I do a webrequest here.
[NSThread sleepForTimeInterval: 5];
dispatch_async(dispatch_get_main_queue(), ^{
[tableView reloadData];
[self.refreshControl endRefreshing];
});
});
}
Он отлично работает. Если я перейду к моему представлению, перетащите таблицу, код запустится и отобразятся данные.
Однако, что бы я хотел сделать, это иметь представление в состоянии загрузки, как только оно появляется (таким образом пользователь знает, что что-то происходит). Я попытался добавить следующее:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.refreshControl beginRefreshing];
}
Но это не работает. Когда я перехожу к представлению, он выглядит как обычный вид (контроль обновления не отображается), плюс когда я пытаюсь вытащить элемент управления обновлением, он никогда не заканчивал загрузку.
Очевидно, что я ошибаюсь. Любые предложения о том, как я должен справиться с этим?