Usando CollectionView en UIView con el file xib

Estoy haciendo esto, quiero usar CollectionView, pero no he visto una celda prototipo, y no sé cómo utilizar CollectionView en este caso, ¿alguien puede ayudarme?

Trato de usar de esta manera, pero toma mucho time y es difícil de manejar que UICollectionView

introduzca la descripción de la imagen aquí

La forma principal de usar UICollectionView es administrando la lógica mediante progtwigción.

  1. Primero, cree una nueva class que henetworkinge de UICollectionViewCell . Elija si desea include una xib para diseñar fácilmente su celda: introduzca la descripción de la imagen aquí

  2. Diseñe su celda con Interface Builder o mediante progtwigción.

  3. Cree su controller de vista principal que incluya un xib (o un storyboard) con la vista de colección dentro y vincúlelo a la class asociada a través de Interface Builder. De forma alternativa, puede agregar una vista de colección mediante progtwigción a su UIViewController

introduzca la descripción de la imagen aquí

  1. Haga que el controller de vista de destino se ajuste a los protocolos UICollectionViewDelegate y UICollectionViewDataSource declarándolos después de la class padre:

     class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource { @IBOutlet weak var collectionView: UICollectionView! //... } 
  2. Registre la punta asociada o la class para su celda en el método viewDidLoad y asocie la viewDidLoad datos y delegue los protocolos a la class del controller de vista:

      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 } 
  3. Implementar los methods declarados en los protocolos UICollectionViewDelegate y 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 } 
  4. Ejecute su aplicación en el simulador (o en un dispositivo real) y … ¡Et voilà! 🙂

introduzca la descripción de la imagen aquí

Para más información: https://developer.apple.com/reference/uikit/uicollectionview

ok primero debe tener el IBOutlet de su vista de colección e implementa los methods como este

 class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{ @IBOutlet var collectionView: UICollectionView! override func viewDidLoad() { super.viewDidLoad() count = 9; let nib = UINib(nibName: "yourItemView", bundle: nil) collectionView.registerNib(nib, forCellWithReuseIdentifier: "yourItemView") self.collectionView.delegate = self self.collectionView.dataSource = self } 

ok en la function que agrega un file xib, a continuación debe crear que se extienda desde UICollectionViewCell, y cuando termine esto debe anular los siguientes methods

 func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return count // the numbers of items } func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {//size of your item for screen sizes let wsize = UIScreen.mainScreen().bounds.size.width switch(wsize){ case 414: return CGSize(width: 190, height: 102) case 375: return CGSize(width: 190, height: 102) case 320: return CGSize(width: 174, height: 102) default: return CGSize(width: 174, height: 102) } } func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCellWithReuseIdentifier("yourItemView", forIndexPath: indexPath) as! yourItemView return cell } 

y esto es todo, buena suerte