IOS: выбор UIScrollView или UITableView

В моем приложении я должен создать представление с большим количеством информации; эта информация делится на 4 раздела, каждый раздел может содержать текст, списки изображений ecc...

Это жестокий пример...

enter image description here

Теперь я сомневаюсь в том, какое решение принять.

В моем быстром мнении большое прокручивание сложно организовать. И большой стол с секцией сложно организовать с кодом... Каковы ваши идеи?

Ответ 1

Вы должны пойти с UITABLEVIEW, простота в управлении, легко понять, сделать многократное использование и хорошее управление памятью

Если у вас есть много контента для прокрутки, UITABLEVIEW может помочь вам сдерживать использование памяти.

Когда ячейка прокручивается с глаз долой, она удаляется из представления и сохраняется вокруг UITABLEVIEW для последующего использования (через -dequeueReusableCellWithIdentifier:). Если у вас мало памяти, я верю, что эти невидимые представления (UITableViewCells) будут выпущены. Это в основном означает, что ваше приложение будет сохранять только просмотры в памяти, которые на самом деле видны. Больше будет кэшироваться, но при необходимости может быть очищено в любое время.

Если вы отобразите много данных и просто добавьте все это в UIScrollView, он потенциально будет использовать гораздо больше памяти, чем если бы вы использовали UITABLEVIEW. Возможно, вам придется реализовать аналогичный механизм для того, что UITABLEVIEW делает для удаления (и потенциально выпуска) невидимых представлений.

Итак, вы можете в основном добиться такого же эффекта, но UITABLEVIEW делает для вас много работы.

Если вы отображаете много данных (возможно, более двух экранов), я бы наклонился к использованию UITABLEVIEW.

Ответ 2

UITableView оптимизирован для "многоразовых" ячеек, что подходит для прокрутки в длинных списках. Еще одно преимущество использования UITableView, как было предложено другими, заключается в том, что он создает только видимые ячейки, поэтому потребление памяти уменьшается.

В вашем случае, поскольку ваш контент выглядит конкретным и не повторяющимся, я бы предложил использовать простой UIScrollView, который проще в использовании. (UITableView наследуется от UIScrollView btw)

Если проблема с памятью/производительностью является проблемой, то предпочитайте UITableView или просто пишите свою собственную логику, чтобы создавать экземпляры, которые видны (например, с помощью scrollOffset)

EDIT:

Во-вторых, в вашем случае UICollectionView, безусловно, лучший кандидат, чем UITableView. Особенно, если вы планируете какой-то день сделать что-то вроде двух колонок на iPad...

Ответ 3

Этот вид вещей очень легко создать в интерфейсе Builder теперь со статическими ячейками; вы можете визуально отображать весь интерфейс и настраивать розетки для ячеек (и/или их подзонов) для настройки содержимого в вашем контроллере представления.