Ответ 1
перед кодом:
[refreshControl beginRefresh]
введите код:
[refreshControl layoutIfNeeded]
Я использую 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]
Отложенный вызов для обновления в viewDidLoad работал у меня:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.refreshControl beginRefreshing];
});
Вам нужно позвонить [self.view layoutIfNeeded]
, чтобы исправить его в iOS 10. Для моего случая было достаточно поставить вызов viewDidLoad
(я использовал раскадровку в этом проекте). Для других случаев viewWillAppear
подходит лучше.
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view layoutIfNeeded];
...
Это известная и зарегистрированная ошибка в iOS 10.
Я не уверен, есть ли какие-либо обходные пути.
То же, что и @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];
Если индикатор обновления не отображается, попробуйте включить вертикальный отскок в Интерфейсном Разработчике для просмотра таблицы или прокрутки.