Ответ 1
Основной способ использования UICollectionView - программно программировать логику.
-
Сначала создайте новый класс, который наследуется от
UICollectionViewCell
. Выберите, если вы хотите включить xib для легкой разработки вашей ячейки: -
Создайте свою ячейку с помощью Interface Builder или программно.
-
Создайте свой главный контроллер представления, включая xib (или раскадровку) с представлением коллекции внутри и связать его с соответствующим классом через Interface Builder. В качестве альтернативы вы можете добавить представление коллекции в программном виде к
UIViewController
-
Сделайте контроллер целевого представления совместимым с протоколами
UICollectionViewDelegate
иUICollectionViewDataSource
, объявив их после класса отца:class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource { @IBOutlet weak var collectionView: UICollectionView! //... }
-
Зарегистрируйте связанный nib или класс для вашей ячейки в методе
viewDidLoad
и сопоставьте источники данных и делегирования протоколов с классом контроллера вида:let cellIdentifier = "cellIdentifier" override func viewDidLoad() { super.viewDidLoad() //if you use xibs: self.collectionView.register(UINib(nibName:"MyCollectionCell", bundle: nil), forCellWithReuseIdentifier: cellIdentifier) //or if you use class: self.collectionView.register(MyCollectionCell.self, forCellWithReuseIdentifier: cellIdentifier) self.collectionView.delegate = self self.collectionView.dataSource = self }
-
Внедрить методы, объявленные в протоколах
UICollectionViewDelegate
иUICollectionViewDataSource
:let objects = ["Cat", "Dog", "Fish"] func numberOfSections(in collectionView: UICollectionView) -> Int { return 1 } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return self.objects.count } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellIdentifier, for: indexPath) as! MyCollectionCell //in this example I added a label named "title" into the MyCollectionCell class cell.title.text = self.objects[indexPath.item] return cell }
-
Запустите приложение в симуляторе (или на реальном устройстве) и.. Et voilà!:)
Для получения дополнительной информации: https://developer.apple.com/reference/uikit/uicollectionview