Я использую UIRefreshControl
на моем столе, чтобы обновлять элементы. И в конце я показываю UIAlertController
, чтобы информировать пользователя о завершении обновления и количестве обновленных элементов. Довольно просто, и он отлично работает для одного. Если я пытаюсь обновить несколько раз подряд, иногда элемент управления обновлением не отменяется даже после отклонения предупреждения. Мне нужно перевернуть стол, чтобы он исчез.UIAlertController иногда предотвращает скрытие UIRefreshControl
Это код я использую, все UI материал красиво сделано на главной теме:
if(refreshControl.refreshing) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self refreshItems];
dispatch_async(dispatch_get_main_queue(), ^{
[refreshControl endRefreshing];
[self.tableView reload];
[self showUpdateInfo];
});
});
}
Любая идея, что может привести к этому?
EDIT: Это, как я создаю контроль обновления в коде (в viewDidLoad
):
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString: @"Checking for updates…"];
[refreshControl addTarget: self
action: @selector(refreshOutdatedItems)
forControlEvents: UIControlEventValueChanged];
self.refreshControl = refreshControl;
Вы о создании UIRefreshControl в коде или используя свойство TableViewController? – Yan
См. Редактирование в моем вопросе. – Koen
Я пытался воспроизвести проблему. Ваш код, похоже, работает должным образом. Кстати, у вас есть dispach_sync, который на самом деле рухнул на меня. Это специально или должно быть dispatch_async? – Yan