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
0
4
169
0

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