2013-05-20 18 views
7

Mam widok tabeli z niestandardową komórką, która pobiera zawartość z tablicy, wszystko to jest w porządku. Chcę dodać do tej treści widok kolekcji obrazów paznokci o różnych numerach do każdej niestandardowej komórki widoku tabeli.Osadzanie widoku kolekcji w komórce niestandardowego widoku tabeli

Dodałem kolekcję do niestandardowej komórki w planszy. Połączyłem kolekcję z Custom Cell.m (nie jestem pewien, czy powinien tam być). Utworzono komórkę niestandardową kolekcji i powiązałem obraz.

Nie wiem, czy metody budowania widoku kolekcji powinny być umieszczone w komórce tabeli niestandardowej.m LUB w kontrolerze widoku .m? Mam obraz z planszy, możesz zobaczyć niestandardową komórkę tabeli, a następnie (nie tak wyraźnie) u dołu jest widok kolekcji (przewijanie w poziomie), który chcę wypełnić obrazkami - tylko nie wiesz, jak? Nie jestem również pewien, które informacje mogą pomóc, więc przykro mi, jeśli brakuje informacji.

Picture of Custom Table Cell

+0

Znalazłem to, ale jest to podstawowa tabela w tabeli. http://iosstuff.wordpress.com/2011/06/29/adding-a-uitableview-inside-a-uitableviewcell/ i przetłumaczenie go na widok kolekcji (z niestandardową komórką) w widoku tabeli jest trudne, chociaż było pomocne . Zastanawiam się, czy szukam niewłaściwych słów kluczowych? –

+0

[Ten samouczek] (http://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell) jest dokładnie tym, czego szukasz. –

Odpowiedz

4

Należy umieścić Delagate i DataSource z UICollectionView wewnątrz niestandardowego UITableViewCell klasie.

Oto nice tutorial.

Chodzi o tableview wewnątrz komórki tableview, ale pomysł jest bardzo podobny.

Powodzenia!

+0

Wielkie dzięki, przyjrzę się. –

+0

To wygląda dobrze. W końcu dodałem widok przewijania, a następnie umieszczając w nim podstrony i dodając gest do każdego widoku. To działa, ale myślę, że Twoja droga może być szybsza ... Spróbuję i zaimplementuję, dzięki. –

2

Oto rozwiązanie dla szybkiego. należy skonfigurować źródło danych widoku kolekcjonowania i przekazać je do komórki widoku tabeli, używając metody delegowania tableView cellForRowAtIndexPath, po tym użyciu należy użyć źródła danych kolekcjiview i przekazać metodę do kontrolera viewController, w którym potwierdzono źródło danych tableveiew i przekazano. Oto kod 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 
} 
} 

tutaj cell.setcollectionViewDataSourceDelegate (samodzielne forRow: indexPath.rom) kod określa pełnomocnika CollectionView i źródła danych do widoku tabeli komórki po tym oporu wylot CollectionView do komórki Tableview. Do komórki tableview dodać mehod setcollectionViewDataSourceDelegate ustawić CollectionView delegata następujące:

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() 
} 
} 

Po tym zastosować metodę widok delegat kolekcja na przeglądanie Kontroler:

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)") 

} 
} 

Dla jasne wyjaśnienie odwiedzić ten https://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell-in-swift/