uicollectionviewcontroller tutorial example collection ios swift uiview uicollectionview collectionview

ios - tutorial - Usando CollectionView en UIView con archivo xib



uicollectionviewcell indexpath (2)

La principal forma de utilizar UICollectionView es gestionando la lógica mediante programación.

  1. Primero, crea una nueva clase que herede de UICollectionViewCell . Elija si desea incluir un xib para diseñar fácilmente su celda:

  2. Diseña tu celda con Interface Builder o mediante programación.

  3. Crea tu controlador de vista principal incluyendo un xib (o un guión gráfico) con la vista de colección dentro y vincúlala a la clase asociada a través de Interface Builder. Alternativamente, puede agregar una vista de colección mediante programación a su UIViewController

  1. Haga que el controlador de vista de destino se ajuste a los protocolos UICollectionViewDelegate y UICollectionViewDataSource al declararlos después de la clase padre:

    class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource { @IBOutlet weak var collectionView: UICollectionView! //... }

  2. Registre el plumín asociado o la clase de su celda en el método viewDidLoad y asocie los viewDidLoad datos y delegue los protocolos a la clase de controlador 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. Implemente los métodos 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à! :)

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

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

Intento usarlo de esta manera, pero toma mucho tiempo y es difícil de administrar que UICollectionView


ok primero debes tener el IBOutlet de tu vista de colección e implementa los métodos 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 función agregas un archivo xib, luego debes crear esa extensión desde UICollectionViewCell, y cuando termines esto debes anular los siguientes métodos

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