2013-05-20 12 views
7

Ho una vista tabella con una cella personalizzata che ottiene il contenuto da un array, tutto ciò va bene. Voglio aggiungere a questo contenuto una vista raccolta di immagini unghie pollice di numero variabile per ciascuna delle celle di visualizzazione tabella personalizzate.Incorpora vista raccolta nella tabella personalizzata Visualizza cella

Ho aggiunto la raccolta alla cella personalizzata nella scheda. Ho collegato la raccolta al Cell.m personalizzato (non sono sicuro che dovrebbe andare lì). Ho creato una raccolta Cella personalizzata e collegato l'immagine.

Da qui non sono sicuro, i metodi per la creazione della vista di raccolta devono essere inseriti nella tabella personalizzata Cella.m O nel controller di visualizzazione .m? Ho un'immagine dalla Story Board, puoi vedere la cella della tabella personalizzata e poi (non così chiaro) in basso c'è una Vista raccolta (scorrimento orizzontale) che voglio popolare con le immagini - non so come? Sono anche sicuro di quali informazioni potrebbero essere utili, quindi mi dispiace se mancano informazioni.

Picture of Custom Table Cell

+0

Ho trovato questo, ma è una tabella di base all'interno di un tavolo. http://iosstuff.wordpress.com/2011/06/29/adding-a-uitableview-inside-a-uitableviewcell/ e la sua traduzione in Vista raccolta (con cella personalizzata) all'interno di una vista tabella è difficile anche se è stato utile . Mi chiedo se sto cercando le parole chiave sbagliate? –

+0

[questo tutorial] (http://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell) è esattamente quello che stai cercando. –

risposta

4

Si dovrebbe mettere il Delagate e DataSource del UICollectionView all'interno della UITableViewCell classe personalizzata.

Questo è un nice tutorial.

Si tratta di tableview all'interno di una cella tableview, ma l'idea è abbastanza simile.

Buona fortuna!

+0

Mille grazie, darò un'occhiata. –

+0

Sembra buono. Ho finito per aggiungere una visualizzazione per lo scorrimento e quindi posizionare le sottoview all'interno di questo e aggiungere un gesto a ciascuna vista. Funziona, ma penso che la tua strada potrebbe essere più veloce ... Proverò e implementerò, grazie. –

2

Ecco la soluzione per swift. è necessario impostare un'origine dati vista raccolta e delegare nella cella tableview utilizzando il metodo di delega tableView cellForRowAtIndexPath, dopo di ciò utilizzare un metodo dataview e un metodo delegate in un viewController in cui è stata confermata l'origine dati tableveiew e delegato. Ecco il codice per mainViewController:

extension MainViewController:UITableViewDataSource, UITableViewDelegate { 

// .....do some table view setup like numberOfRowsInSection ...... 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("yourReusecellIdentifier", forIndexPath: indexPath) as! yourCustomCell 

cell.setCollectionViewDataSourceDelegate(self, forRow: indexPath.row) 

return cell 
} 
} 

qui cell.setcollectionViewDataSourceDelegate (self, forRow: indexPath.rom) codice imposta un delegato CollectionView e origine dati nella cella vista tabella dopo questa trascina presa CollectionView alla cella Tableview. Nella cella tableView aggiungere un setcollectionViewDataSourceDelegate mehod per impostare CollectionView delegato come segue:

class yourCustomCell: UITableViewCell { 

//MARK:- Properties 

@IBOutlet weak var collectionView: UICollectionView!  

//MARK:- initialization methods 

override func awakeFromNib() { 
    super.awakeFromNib() 
    setupView() 
} 

override func setSelected(selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

} 

//MARK:- Setup collectionView datasource and delegate 

func setCollectionViewDataSourceDelegate 
    <D: protocol<UICollectionViewDataSource, UICollectionViewDelegate>> 
    (dataSourceDelegate: D, forRow row: Int) { 

    collectionView.delegate = dataSourceDelegate 
    collectionView.dataSource = dataSourceDelegate 
    collectionView.tag = row 
    collectionView.reloadData() 
} 
} 

Dopo questo uso il metodo di visualizzazione delegato di raccolta in voi View Controller:

extension MainViewController: UICollectionViewDelegate, UICollectionViewDataSource { 

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 

     return 2 

} 

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

     return 5 
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

     let cell = collectionView.dequeueReusableCellWithReuseIdentifier("collectionViewReuseIdentifier", forIndexPath: indexPath) as! YourCollectionViewCustomCell 

     .......cell configure.... 

     return cell 

} 
} 

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 

print("get selected collectionview itemindex \(indexPath.row)") 

} 
} 

Per chiara spiegazione visita questa https://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell-in-swift/

Problemi correlati