Я пытался запустить простой код, который отлично работает на 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?
Мобильная версия