#ios #swift #xcode
#iOS #swift #xcode
Вопрос:
Я настроил кнопку в своем приложении для iOS, которая выполняет переход от 1-го контроллера представления к 2-му контроллеру представления. Но при переходе с 1-го контроллера представления на 2-й контроллер представления задержка составляет около 3-5 секунд. Есть ли какой-либо способ избежать этой задержки, и пользователь может легко перейти ко 2-му контроллеру представления одним нажатием кнопки без каких-либо задержек? Был бы признателен, если бы кто-нибудь мог предоставить какие-либо предложения о том, как я могу устранить эту проблему? Большое спасибо за помощь 🙂
@IBAction func startButton(_ sender: Any) {
performSegue(withIdentifier: "1to2segue", sender: self)
}
2-й контроллер представления отображает текущую статистику, извлеченную из внешнего источника. Таким образом, для загрузки требуется время. Как я могу ускорить этот процесс?
override func viewDidLoad() {
super.viewDidLoad()
loadData()
}
Комментарии:
1. Если у вас есть задержка, это не оттуда. Я предполагаю, что вы блокируете основной поток вместо этого где-то в другом месте.
2. Добавьте его в основной поток.
3. Поскольку во втором контроллере представления данные извлекаются с внешнего сервера для отображения статистики в реальном времени, для загрузки 2-го контроллера представления требуется время
Ответ №1:
В вашем втором контроллере представления НЕ вызывайте свою loadData()
функцию viewDidLoad()
.
Вы хотите сделать как можно меньше, чтобы получить представление на экране. Показать счетчик или какой-либо другой вид активности «Загрузка данных …».
Затем, возможно, в viewDidAppear()
, вызовите свою loadData()
функцию. Но убедитесь, что все, что вы делаете, loadData()
выполняется в асинхронном процессе.
Комментарии:
1. Спасибо за ответ. Я сделал именно так, как указано выше. Теперь 2-й контроллер представления загружается без каких-либо задержек, но для загрузки данных в нем контроллеру Vew требуется некоторое время. Не могли бы вы объяснить мне, почему это происходит. Спасибо!
2. @Pressing_Keys_24_7 — Я абсолютно не представляю , какие данные вы загружаете, как вы их загружаете, что вы с ними делаете и т.д. Если, например, вы загружаете 500 записей из базы данных на удаленный сервер, это, вероятно, займет некоторое время. Вы могли бы ускорить это, загрузив только первые, скажем, 20 записей, а затем загрузив еще 20 по мере необходимости. Но опять же, я понятия не имею, что вы делаете.
3. Правильно! Думаю, сейчас я буду использовать загрузчик активности в контроллере представления, пока он не загрузит данные с сервера! Цените свое время и усилия!