Когда использовать UICollectionView вместо UITableView?

Я обнаружил, что UICollectionView похож на обновленную версию UITableView, введенную в iOS6, но когда я должен выбрать UICollectionView вместо UITableView?

Есть приложения, использующие UITableView, если UICollectionView может делать что-либо UITableView, то почему люди все еще используют UITableView? Есть ли разница в производительности?

Спасибо!

Ответ 1

Это зависит от требований. Как потоки приложений определяют, какой тип пользовательского интерфейса должен интегрироваться в приложение.

В основном пользователи используют UICollectionview для создания типов пользовательских интерфейсов с несколькими изображениями, отображаемыми в сетке. Это имело бы сложную логику с помощью UITableView, но с UICollectionview было бы легко.

При использовании UICollectionview вам не нужно устанавливать кнопки с тегами или другими вещами, получая выбранные значения элементов. Вы можете просто получить -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath и в UITableViewDelegate:

`-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`

Вы получаете выбранную строку вместо элемента, поэтому для создания сетки или измененных элементов лучше использовать UICollectionview.

Для информации о листинге каждого элемента люди используют UITableView, потому что он показывает больше информации о каждом элементе.

Apple Docs:

Ссылка на класс UICollectionView

Класс UICollectionView управляет упорядоченным набором элементов данных и представляет их с помощью настраиваемых макетов. Представления коллекции предоставляют ту же общую функцию, что и представления таблиц, за исключением того, что представление коллекции способно поддерживать не только одноколонные макеты. Представления коллекции поддерживают настраиваемые макеты, которые можно использовать для реализации многоколоночных сеток, мозаичных макетов, круговых макетов и многих других. Вы можете даже изменить макет представления коллекции динамически, если хотите.

Ссылка на класс UITableView

В представлении таблицы отображается список элементов в одном столбце. UITableView - это подкласс UIScrollView, который позволяет пользователям прокручивать таблицу, хотя UITableView позволяет только вертикальную прокрутку. Клетки, содержащие отдельные элементы таблицы, являются объектами UITableViewCell; UITableView использует эти объекты для рисования видимых строк таблицы. Ячейки имеют контент-заголовки и изображения и могут иметь рядом с правым краем аксессуарные виды. Стандартные виды аксессуаров - это индикаторы раскрытия информации или кнопки раскрытия подробностей; первый приводит к следующему уровню в иерархии данных, а последний приводит к детальному представлению выбранного элемента. Аспекты аксессуаров также могут быть элементами управления структурой, такими как переключатели и слайдеры, или могут быть настраиваемыми представлениями. Представления таблиц могут вводить режим редактирования, в котором пользователи могут вставлять, удалять и изменять порядок строк таблицы.

Ответ 2

Для простых списков и навигации вперед/назад navigtaion используйте UITableView.

Если вам нужна высокая степень настраиваемости, используйте UICollectionView.

Вообще говоря, при разработке программного обеспечения лучше всего выбрать подход, который представляет "The Simplest Possible Thing".

Ответ 3

Здесь мои критерии:

  • Если UITableView может это сделать, используйте его

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

Вы должны рассмотреть ограничения на UITableView перед принятием решения: это один столбец. И вы можете настраивать только ячейки, но не фонов раздела и т.д. Так что, если у вас есть верный список вещей без лишних излишеств - это похоже на стандартное представление iOS для болота, в основном - тогда используйте UITableview. Если у вас есть пользовательские вставки или граница вокруг каждого раздела, используйте UICollectionView.

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

Редактировать после еще большего опыта с двумя: проигнорировать этот последний абзац. UICollectionView требует много кода шаблона, чтобы он работал как UITableView. Используйте UICollectionView только тогда, когда это действительно необходимо.;)

Ответ 4

Согласно моей точке зрения, основное отличие между collectionView и tableView заключается в том, что

TABLEVIEW → показать список элементов только в одном столбце.

COLLECTION-VIEW → показать список элементов в нескольких столбцах.

Надеюсь, это поможет вам.

Ответ 5

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

Ответ 6

Оба зависят от требований. Представления таблиц также поддерживают множество сценариев редактирования. Эта поддержка не была реализована в классах Collection View. Если вы переходите из табличного представления, которое опирается на эти методы, ожидайте сделать небольшой дополнительный тяжелый подъем в коллекции. Заголовки заголовка Collection View могут быть размещены в любом месте представления. и UITableView не нужно устанавливать кнопки с тегами или другими вещами, получая выбранные значения элементов.

Ответ 7

Хотя это не требуется, я всегда использую коллекцию. Таким образом, я могу легко адаптировать, как мои коллекции представлены для разных резолюций. Плюсом является то, что он готов быстро добавлять новые типы ячеек при рефакторинге в будущем.

Я не вижу смысла в табличных представлениях. Очень просто использовать представление коллекции для представления таблицы. ИМО.

Ответ 8

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

UICollectionView удобна для настройки.

Если вы имеете дело с несколькими высотами ячеек или около того, перейдите к UICollectionView.

Ответ 9

В соответствии с нашей потребностью мы выбираем TableView или CollectionView.

Пример:

Для контактов телефона tableView - лучший вариант.

Для фотогалереи лучшим вариантом будет просмотр коллекции.

Ответ 10

У меня была эта проблема в моем текущем проекте. Что использовать. В моем случае это было просто на самом деле. Мне нужны были оба. Мне понадобилось мое представление, чтобы выглядеть как UITableView, а также изменить его изменение/макет. Итак, UICollectionView был использован. Я также использую UITableView везде, где мне не нужна дополнительная настройка. Поскольку UiTableView поставляется с макетом по умолчанию, который включает в себя изображения и текст - я использую его для простоты.

Ответ 11

В соответствии с нашим требованием мы выбираем представление UITableView или UICollection.

Если мы хотим отображать изображения или элементы в типе сетки, или если нам нужна дополнительная настройка, мы используем UICollectionview.

Для перечисления каждого элемента с деталями и подзадачами мы используем UITableView.

UICollectionView:Класс UICollectionView управляет упорядоченным набором элементов данных и представляет их с помощью настраиваемых макетов. Представления коллекции предоставляют ту же общую функцию, что и представления таблиц, за исключением того, что представление коллекции способно поддерживать не только одноколонные макеты.

UITableView: В представлении таблицы отображается список элементов в одном столбце. UITableView - это подкласс UIScrollView, который позволяет пользователям прокручивать таблицу, хотя UITableView допускает только вертикальную прокрутку.