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 теперь со статическими ячейками; вы можете визуально отображать весь интерфейс и настраивать розетки для ячеек (и/или их подзонов) для настройки содержимого в вашем контроллере представления.