Я постараюсь изложить проблему простыми словами. Я довольно новичок в программировании для iOS.
Я разрабатываю приложение, которое получает ответ на основе XML от сервера. Приложение состоит из 4 вкладок, которые вызывают другой запрос, и все ответы основаны на xml.
Сценарий проблемы:
Предположим, я нажимаю первую вкладку, на которую отправляется запрос на первый набор данных. В обычном сценарии я анализирую ответ и отображаю его на экране. Экран состоит из UIScrollView
, и я добавляю подпредставления, чтобы он выглядел как сетка изображений. Я запрашиваю изображения при создании вида сетки. URL для изображений являются частью ответа. Опять же, это асинхронный запрос и обновление вида сетки на основе индекса. Это работает нормально, если я не нажимаю никакую другую вкладку в течение всего процесса обновления. Предположим, я нажимаю другую вкладку, после чего также запускается запрос к серверу.
Я отправляю асинхронный запрос для каждой выборки и сохраняю резюме в моей модели данных, которая по сути является одноэлементной. Поэтому я могу получить доступ ко всем ответам в моем viewcontroller, когда я заполняю представления.
Проблема возникает при получении содержимого первой вкладки с сервера и нажатии другой вкладки.
Я хочу остановить загрузку изображений / ответов, которые были инициированы с первой вкладки нажмите. Моя модель способна хранить полученные данные, включая изображения, и инициировать новый запрос на изображение, если оно не было загружено в первый раз.
Во время этого процесса пользовательский интерфейс становится полностью не отвечающим. Я не хочу иметь неотзывчивый интерфейс.
- Как мне эффективно это сделать без необходимости загружать содержимое дважды?
- Может ли быть лучший подход для достижения этого?
PS: я вставлю код, если необходимо, удалив ненужные детали, но было бы очень полезно, если вы знаете, как правильно отправлять запросы и обрабатывать их, не делая пользовательский интерфейс без ответа.
Изменить:
Я создаю 100 подпредставлений и добавляю их в представление прокрутки. В течение этого времени я не могу прокрутить, и, следовательно, это дает ощущение зависания. Как я могу обновить представление UIscroll без компромисса в отзывчивости?