Первый вариант тут 👉 https://zen.yandex.ru/media/id/6005d895f46d284abbb641fe/collectionview-swift-primery-600870abda2b006973ccf038
Будем использовать проект EnterInTableView.
В Main.storyboard выбрем пустой ViewController и добавим туда коллекцию
Закрепим constraint коллекции
Удалим автоматически созданную ячейку из коллекции в Main.storyboard выбираем View Controller в нем ячейку и стираем ее получится вот так:
У нас выбран View Controller в сториборде, через Ассистента откроем к нему, выберем коллекцию и от нее протянем аутлет.
Протянем @IBOutlet weak var collectionView: UICollectionView!
Для работы в классе ViewController унаследованного от UIViewController нам понадобится прописать расширение, что ViewController наследуется еще от UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout.
В расширении extension ViewController: UICollectionViewDataSource {} он выдает ошибку что у нас не достаточно методов, т.е какие-то методы обязательно должны присутствовать в данном расширении если нажать на красный кружок он говорит что ViewController код не соответсвует протоколу UICollectionViewDataSource и предложит это исправить Fix
У нас добавились методы numberOfItemsInSection - количество ячеек в секции и cellForItemAt - настройка ячейки по индексу. В первом методе нужно вернуть число во втором ячейку коллекции.(настроим методы далее)
Все еще работаем в ViewController.swif. Зарегистрируем нашу существующую ячейку в коллекции, для этого добавим код во viewDidLoad:
Так же добавим нашу функцию создания массива и вызовем ее во viewDidLoad :
Вернемся к методам UICollectionViewDataSource и заполним их данными:
Если запустим проект то будем видеть экран CollectionViewController, который был в первой части. Для того чтобы видеть оба экрана с разными коллекциями будем использовать TabBarController.
- Откроем Main.storyboard найдем TabBarController и перетащим его в свободное место.
- Удалим лишние View Item Scene 1 и 2.
- После удаления протянем новые связи от TabBarController к ViewController и CollectionViewController. (Ctr и потянули мышкой голубую линию от tabbar к существующим контроллерам с коллекциями по очереди )
- в появившемся окошке выбираем view controllers
- В итоге получаем tabbar с двумя Item
- Изменим инициализируемый контроллер, перетащим стрелочку к TabBarController
- запустим проект
Первый экран ViewController оказался пустым. Если поставим точки остановки во ViewController.swift и запустим проект заново то увидим что он на них не остановился, поймем что он не зашел в методы связанные с настройкой коллекции. Это связно с тем что нам необходимо сказать коллекции что ViewController подписан на методы настройки коллекции, self = ViewController( картинка 2).
- Запустим проект еще раз и он остановится на наших точках остановки.
- Отключим их и продолжим .
- Теперь на первом вью тоже есть ячейки.
Настроим чтобы наша коллекция двигалась горизонтально:
Настроим размер ячеек в ViewController. Для этого отключим автоматический размер ячеек:
Добавим следующий код во ViewController.swift в расширении extension ViewController: UICollectionViewDelegateFlowLayout {}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
CGSize(width: 170, height: 100)
}
Запустим проект и увдим изменения в коллекции. Данный способ работы с коллекцией нужен когда у вас на экране есть не только элемент коллекции но и другие, можно задать любой размер коллекции ширину и высоту.
Попробуйте поменять настройки constraint коллекции и размеров ячейки ней.
Всем добра!😊