UIRefreshControl не отображается в iOS 17 (получено закадровое предупреждение о начале обновления)IOS

Программируем под IOS
Ответить
Anonymous
 UIRefreshControl не отображается в iOS 17 (получено закадровое предупреждение о начале обновления)

Сообщение Anonymous »


Я пытался запустить простой код, который отлично работает на iOS 15/14/16, но теперь при использовании Xcode 15 на iOS 17 это больше не работает. Я прикреплю приведенный ниже код, отображающий представление таблицы с помощью UIRefreshControl, который запустит beginRefreshing() перед запросом на выборку, но элемент управления обновлением больше не отображается на iOS 17 и Я получаю предупреждение о том, что элемент управления обновлением получил внеэкранное началоRefreshing.


Изображение


Вот код с имитированным запросом на выборку с использованием DispatchQueue.main.asyncAfter, отображающий простое табличное представление. Если вы попытаетесь запустить его на iOS 17, элемент управления обновлением не будет отображаться перед имитированным запросом на выборку.

класс ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { частный let tableView = UITableView() частный let cellIdentifier = "cellIdentifier" частные данные let = ["Ячейка 1", "Ячейка 2"] частный пусть обновитьControl = UIRfreshControl() переопределить функцию viewDidLoad() { супер.viewDidLoad() настроитьТаблевиев() обновитьControl.beginRefreshing() // Имитируем запрос на выборку DispatchQueue.main.asyncAfter(deadline: .now() + 1, выполните: { self.setDataSource() }) } частная функция configureTableView() { tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellIdentifier) обновитьControl.addTarget(self, действие: #selector(refreshData), для: .valueChanged) tableView.refreshControl = RefreshControl tableView.frame = view.bounds tableView.autoresizingMask = [.flexibleWidth, .flexibleHeight] view.addSubview(tableView) } частная функция setDataSource() { tableView.dataSource = сам tableView.reloadData() обновитьControl.endRefreshing() } // ОТМЕТКА: - UITableViewDataSource func tableView (_ tableView: UITableView, раздел NumberOfRowsInSection: Int) -> Int { вернуть данные.count } func tableView (_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) ячейка.textLabel?.text = данные[indexPath.row] возвратная ячейка } // ОТМЕТКА: - Действие обновления элемента управления @objc Private Func RefreshData() { DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { self.refreshControl.endRefreshing() self.tableView.reloadData() } } } Знаете ли вы какое-нибудь решение этой проблемы, чтобы оно работало так же даже на iOS 17, без использования методов viewDidAppear или viewWillAppear?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»