2015-04-09 3 views
3

Я пытаюсь реализовать iPhone и iPad версии изящно. Они по сути являются одним и тем же контроллером, но один iPhone представлен в одном столбце tableView и iPad в коллекционной коллекции multi-columnView.UITableView && UICollectionView в одном контроллере?

Вот варианты я думал:

  1. Один ViewController, который просит другой DataSource и иной делегат для Tableview против CollectionView. Я не думал, что этот вариант на всем пути. Похоже, что это может стать слишком сложным.

  2. Один baseViewController, а затем 2 подкласса, один с tableView и один с CollectionView. Подобно опции №1, но с использованием подклассов. Вариант № 1 является более чистым, но это было бы проще реализовать.

  3. Просто используйте CollectionView для обоих, но используйте разные UICollectionViewFlowLayouts. Это был последний вариант, о котором я думал, и, пожалуй, самый лучший вариант, но мне интересно, есть ли причина, почему №1 или №2 могут быть лучше.

+2

Вы также можете создать два разных монитора просмотра и нажать соответственно для iPhone и iPad, ваш второй подход выглядит аналогично этому. Но с оптимизированным кодом –

+0

Вы также можете использовать те же методы делегатов для обработки нескольких UITableViews и выбрать, что делать, на основе того, какой экземпляр TableView передается через параметр. – clearlight

+0

Я бы предпочел третий вариант, так как будет легче управлять и понимать. – atulkhatri

ответ

1

Итак, я закончил работу с 1 UICollectionView, и IMO отлично работает.

Я должен был написать условными только 3 частей:

  1. Возвращение различных collectionViewFlowLayouts
  2. Вернувшиеся различных размеров для collectionView:layout:sizeForItemAtIndexPath:
  3. Различные макеты для layoutSubviews в UICollectionViewCell

Возможность использовать t он тот же UICollectionViewCell был действительно большим плюсом, так как я реализую несколько кнопок в ячейке, и мне не пришлось реплицировать делегатов для точно подобной логики в UICollectionViewCell И UITableViewCell.

Смежные вопросы