Как избежать задержки от одного контроллера представления к другому в Xcode с помощью Swift

#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. Правильно! Думаю, сейчас я буду использовать загрузчик активности в контроллере представления, пока он не загрузит данные с сервера! Цените свое время и усилия!