Sto creando la vista Raccolta in modo programmatico. Ecco il codice in viewDidLoad funcCome ottenere cellInIndex in UICollectionView con swift?
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
layout.itemSize = CGSize(width: 90, height: 120)
collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
collectionView!.dataSource = self
collectionView!.delegate = self
collectionView!.registerClass(CollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell")
collectionView!.layer.cornerRadius = 2
collectionView!.backgroundColor = UIColor.redColor()
self.containerView.addSubview(collectionView!)
E questi sono i miei collezione guarda funzioni
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 8
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("CollectionViewCell", forIndexPath: indexPath) as! CollectionViewCell
cell.backgroundColor = UIColor.blackColor()
cell.buttonView.addTarget(self, action: Selector("Action\(indexPath.row):"), forControlEvents: UIControlEvents.TouchUpInside)
return cell
}
idea è che ho un pulsante nella cella, e quando premo che la cellula dovrebbe cambiare colore, qui è la funzione di azione
func Action0(sender: UIButton!) {
var indexPath = NSIndexPath(forRow: 0, inSection: 0)
let cell = collectionView!.dequeueReusableCellWithReuseIdentifier("CollectionViewCell", forIndexPath: indexPath) as! CollectionViewCell
cell.backgroundColor = UIColor.blueColor()
e questo è di classe collectionViewCell,
class CollectionViewCell: UICollectionViewCell {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
var buttonView: UIButton!
override init(frame: CGRect) {
super.init(frame: frame)
buttonView = UIButton.buttonWithType(UIButtonType.System) as! UIButton
buttonView.frame = CGRect(x: 0, y: 16, width: frame.size.width, height: frame.size.height*2/3)
contentView.addSubview(buttonView)
}
}
Il pulsante e le opere d'azione ma la cella non cambia colore, credo che il problema è in questa linea
let cell = collectionView!.dequeueReusableCellWithReuseIdentifier("CollectionViewCell", forIndexPath: indexPath) as! CollectionViewCell
Perfetto! Grazie! – Jeff