iOS 10.0 UIRefreshControl не показывает индикатор

Я использую UITableView, у которого есть функция Pull down to refresh, но spinner для pull down to refresh не появляется, когда я вызываю [self.refreshControl beginRefreshing]

Вышеупомянутый код вызывается внутри viewDidLoad, потому что таблица сначала загружает некоторые данные. Spinner отлично работает, если я выполнил откат, чтобы обновить его после первоначального обновления. Название появляется, но не прядильщик.

Возможно, проблема не решена. Он отлично работает на iOS 9.3.2, но не на iOS 10.

Вот код, который я использую в настоящее время.

- (void)viewDidLoad { [super viewDidLoad]; [self setupView]; [self customSetup]; self.refreshControl = [[UIRefreshControl alloc] init]; self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Updating Discounts..."]; [self.refreshControl addTarget:self action:@selector(reloadDeals) forControlEvents:UIControlEventValueChanged]; [self.refreshControl beginRefreshing]; [self.tableView setContentOffset:CGPointMake(0, -self.refreshControl.frame.size.height) animated:YES]; } 

заранее спасибо за помощь

перед кодом:

[refreshControl beginRefresh]

введите код:

[refreshControl layoutIfNeeded]

Вам нужно вызвать [self.view layoutIfNeeded] чтобы исправить его в iOS 10. Для моего случая достаточно было поставить вызов viewDidLoad (я использовал раскадровку в этом проекте). Для других случаев viewWillAppear подходит лучше.

 - (void)viewDidLoad { [super viewDidLoad]; [self.view layoutIfNeeded]; ... 

Отсрочка вызова для обновления в viewDidLoad сработала для меня:

  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.refreshControl beginRefreshing]; }); 

Это известная и зарегистрированная ошибка в iOS 10.

Радар rdar: // 27468436

Я не уверен, есть ли какие-нибудь обходные пути.

То же, что и @jpros, но в быстрой

 if #available(iOS 10.0, *) { tableView.refreshControl = refreshControl } else { tableView.addSubview(refreshControl) } refreshControl.layoutIfNeeded() refreshControl.beginRefreshing() 

Я смог исправить это, позвонив из viewDidLoad ():

 refreshControl.layoutIfNeeded() 

В iOS10 мы должны добавить UIRefreshControl, используя setRefreshControl UITableView или UICollectionView.

 if([self.tableView respondsToSelector:@selector(setRefreshControl:)]) { [self.tableView setRefreshControl:self.refreshControl]; } else { [self.tableView addSubview:self.refreshControl]; } [self.refreshControl layoutIfNeeded]; [self.refreshControl beginRefreshing]; 
Interesting Posts
Давайте будем гением компьютера.