2014-11-26 2 views
6

Ho cercato molto per creare uno UICollectionView programmaticamente ma nessuno di loro suggerisce il modo più semplice per usarlo, come aggiungere un'etichetta o un'immagine allo UICollectionViewCell. La maggior parte dei siti suggerisce che l'implementazione di UICollectionView è la stessa di UITableView, ma la principale differenza viene quando proviamo ad aggiungere qualsiasi immagine. Nel UITableView possiamo assegnare le immagini nel metodo cellForRow dove cell == nil e assegnare le immagini dove (cell != nil). ma qui, nel caso del metodo UICollectionView ItemAtIndexPath, non esiste alcuna condizione (cell == nil) come in CellForRow. Di conseguenza, non è possibile allocare in modo efficace le variabili di UImageView s o Etichette ecc nel metodo itemAtIndexPath. Voglio sapere se esiste un'alternativa diversa dalla sottoclasse dello UICollectionViewCell e allocare le variabili in quella Classe personalizzata? Qualcuno può aiutare, ogni aiuto è apprezzato.Come creare e utilizzare UIcollectionView a livello di codice?

+0

Forse questo post del blog e repository github corrispondente ho fatto ti aiuta: http://dasdev.de/2013/12/27/delegate-and-data- source-of-collection-views/ – dasdom

+0

ya in una certa misura, ma dobbiamo sottoclassi l'NSObject nel link che hai suggerito. Quindi, per aggiungere un'etichetta, non esiste altro che la sottoclasse che non è necessaria nella classe uitableview. Grazie comunque. –

+0

http://stackoverflow.com/questions/17856055/creating-a-uicollectionview-programmatically –

risposta

3

Non esiste un'alternativa per creare o allocare celle nel metodo itemAtIndex. Abbiamo bisogno di registrare la classe personalizzata per creare qualsiasi vista all'interno della classe personalizzata. qualcosa di simile:

[UICollectionView registerClass:[CustomCollectionViewClass class] forCellWithReuseIdentifier:@"cellIdentifier"]; 

here è il collegamento migliore che ho trovato utile. Speranza che aiuta gli altri

1

rapida:

override func viewDidLoad() { 
     super.viewDidLoad() 

     let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout() 
     layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10) 
     layout.itemSize = CGSize(width: 70, height: 70) 

     let demoCollectionView:UICollectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout) 
     demoCollectionView.dataSource = self 
     demoCollectionView.delegate = self 
     demoCollectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell") 
     demoCollectionView.backgroundColor = UIColor.whiteColor() 
     self.view.addSubview(demoCollectionView) 
    } 

    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 27 
    } 

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) 
     cell.backgroundColor = UIColor.lightGrayColor() 
     return cell 
    } 

    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 
    { 
     print("User tapped on item \(indexPath.row)") 
    }