2017-05-22 45 views
0

Ich habe Sammlungsansicht in der Tabellenansicht Zelle jetzt, wenn ich auf die Sammlungsansicht Zelle klicken wird es zum nächsten View-Controller gehen, ist es möglich? Ich habe in das tat wählen Sie den Punkt Methode versucht, wie segue Methode zu verwenden, führenCollectionview in der Tabellenansicht Zelle

Antwort

1

Ich zeige u Beispiel

 class ViewController: UIViewController, UITableViewDelegate, 
    UITableViewDataSource { 
     @IBOutlet weak var tableView: UITableView! 
    override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool { 
     return false 
    } 
} 

Diese Viewcontroller enthalten Tableview Datenquelle n Delegierten. Seine Zelle vom Typ unterhalb

class DemoTableViewCell: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegate { 
     var parentVC: UIViewController? 

     @IBOutlet weak var collectionView: UICollectionView! 
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{ 
     return 10 
    } 
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{ 
     let demoCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "DemoCollectionViewCell", for: indexPath) as! DemoCollectionViewCell 
     return demoCollectionViewCell 
    } 

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath){ 
     (self.parentVC as! ViewController).performSegue(withIdentifier: "YourSegueName", sender: self) 


    } 
    } 

Wieder DemoTableViewCell enthält Datasouce und delegiert die Auflistungsansicht DemoTableViewCell zeigt, wie oben Auch zeigt didSelectItemAt performSegue enthält, die für die Segue Mutter refrence verwendet.

Jetzt in der Sammlung Ansicht Zelle gibt es 1 Variable mit dem Namen parentVC, U haben diesen Wert in cellForRowAtIndexPath in Viewcontroller Klasse wie die einen Übergang von collectionViewCell zu YourController auf Storyboard macht

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let demoTableViewCell = tableView.dequeueReusableCell(withIdentifier: "DemoTableViewCell", for: indexPath) as! DemoTableViewCell 
     demoTableViewCell.parentVC = self 
     demoTableViewCell.collectionView.reloadData() 
     return demoTableViewCell 
    } 

und endgültig definiert einzustellen

+0

Ich brauche collectionview im ersten Abschnitt von tableview Zelle und remaing haben keine collectionviews, wenn klicken zweiten Abschnitt tableview Zelle führt es für segue vorbereiten, jetzt ist meine Frage, die Sie schreiben sollten, ist falsch, wenn wir falsch geben, wird tableview durchführen vorbereiten für die Überleitungsmethode? – udaykumar40

+0

In diesem Fall müssen Sie die performSegue-Methode aufrufen, wenn Sie in eine beliebige Zelle klicken self.performSegue (withIdentifier: "your_segue_identifier", sender: self) und shallPerformSegue wird false zurückgeben. –

+0

Vielen Dank für Ihre Antwort. Ich hatte ein ähnliches Problem, und ich habe es gelöst. Ich denke, dass der Hauptteil dieser Antwort darin gesetzt ist, "var parentVC: UIViewController?" Innerhalb der View zu setzen und diesen Controller von 'cellForRowAt' durch' demoTableViewCell.parentVC = self' zu setzen. –

Verwandte Themen