2016-08-01 24 views
1

Guten Tag genannt,prepareForSegue wird nie in UICollectionView

Ich versuche, ein segue von meinem Collectiondurchzuführen, aber die prepareForSegue ausgelöst nie, wenn eine Zelle zu berühren. Dies funktioniert für meine TableView, aber nicht für meine CollectionView.

Wie Sie in meinem Code sehen können, habe ich beide im selben ViewController, aber ich weiß nicht, warum es nur für das TableView funktioniert. Die "segueCollection" wird nie ausgelöst.

Was muss ich tun, damit dies funktioniert? Es gibt eine Art von Problem, weil ich auch das TableView-Segment verwende? Ich bin hier ein bisschen verloren.

Hier ist mein Code:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "showMovieFromTable", let destination = segue.destinationViewController as? MovieViewController, index = tableView.indexPathForSelectedRow?.row { 
     destination.year = searchMovies[index].year 
    } else if segue.identifier == "showMovieFromCollection" { 
     print("segueCollection") 
    } 
    print("segueTriggered") 
} 

Ich bin auch in diesem Code versucht (aber es ist auch zeigt nichts):

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    print(indexPath) 
    self.performSegueWithIdentifier("showMovieFromCollection", sender: self) 
} 

Vielen Dank im Voraus,

Grüße.

+1

"Was muss ich tun, damit dies funktioniert?" ja lass es uns wissen. Wie haben Sie an Sammlung –

+0

I @Lu_ angehängt, ich habe die "Auswahl" -Option von der Zelle innerhalb der CollectionViewCell an den MovieViewController im Storyboard angeschlossen. –

+0

Wo nennst du es ('performSegue :())'? Wie hast du es festgelegt? Wenn Sie zum Beispiel das Segment direkt von der Zelle zum nächsten VC und nicht zum aktuellen VC zum nächsten VC setzen, wird es nicht aufgerufen. – Larme

Antwort

1

Ich hatte das gleiche Problem und blieb dort für ein bisschen Zeit stecken. Schließlich erkenne ich, anstatt PrepareForSegue zu verwenden, muss ich Prepare-Funktion verwenden.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "YourIdentifier" { 
     // stuff you want to do 
    } 
}