Swift, Xcode - какой контроллер представления использовать для горизонтальной и вертикальной прокрутки с динамическим контентом

Я работаю над приложением для iPhone, и я надеялся, что кто-то поделится своими знаниями о том, какой контроллер представления лучше всего подходит для функциональности, которую я хотел бы достичь.

У меня есть два параметра x и y, и я получаю текстовые данные из веб-службы на основе этих двух параметров. Когда пользователь проводит горизонтальное или вертикальное смахивание, я обновляю x и y и получаю новые данные. Теоретически эту операцию можно выполнять очень большое количество (тысячи) раз.

Здесь меня беспокоят две вещи:

  1. Представление. Поскольку мы можем выполнять большое количество операций считывания, должен быть метод для освобождения данных, когда они не нужны.
  2. Плавный переход. Я бы хотел, чтобы и горизонтальный, и вертикальный переход были плавными, с возможностью остановки на полпути, как при переходе между страницами в UIPageViewController.

Я провел исследование по этому поводу и пока нашел следующие варианты:

  1. UIViewController с распознавателями жестов. Это то, что я сейчас закодировал. Я использую распознаватели жестов для обновления данных. Для переходов я использую метод с CATransition. Проблема с этим методом заключается в том, что переходы не плавные и не могут быть остановлены на полпути. Думаю, я мог бы потратить больше времени на метод перехода и заставить его работать хорошо, но это похоже на решение, которое не является элегантным и ужасным для обслуживания, поскольку Swift предоставляет нам другие контроллеры представления, в которых это реализовано. Я также не уверен, как приложение будет работать в этой ситуации после сотен смахиваний.
  2. UIPageViewController. Я читал, что можно сделать вертикальный UIPageViewController внутри горизонтального UIPageViewController, чтобы можно было провести пальцем в любом направлении на новую страницу. Однако я не уверен, что это правильное решение с динамическим содержимым, возможно, состоящим из тысяч страниц.
  3. UICollectionViewController. Насколько я понимаю, я, вероятно, мог бы использовать и для этого UICollectionViewController.

Какой контроллер представления имеет для этого наиболее подходящие методы? Хотелось бы, чтобы решение было элегантным и простым в обслуживании в дальнейшем. Я не против провести больше исследований и выяснить, как писать код, если я знаю, в каком направлении мне следует двигаться :)

Спасибо!

Похоже, что ваши контроллеры представления слишком много делают. objc.io/issues/1-view-controllers/lighter-view-controllers

vikingosegundo 10.08.2018 15:10

Вполне может быть так. У вас есть предложение, какая реализация будет лучшим выбором? :)

user3429824 10.08.2018 17:03

О, я только что увидел вашу ссылку, извините за это. Дело в том, что все данные хранятся в отдельном настраиваемом классе, и извлечение данных из веб-службы также осуществляется в этом классе. Я создаю только экземпляр этого класса в контроллере представления, поэтому считаю, что какой бы контроллер представления я ни использовал, он будет довольно легким :)

user3429824 10.08.2018 17:07

Этот класс звучит еще хуже.

vikingosegundo 10.08.2018 18:34
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
169
0

Другие вопросы по теме