2017-01-11 2 views
0

Ich mag den Wert in meiner Lage sein, neu zu laden DetailViewController. Wie segue ich die ausgewählte indexPath so kann ich den Wert in den nächsten View-Controller nennen?Swift Wie indexPath Wert von CollectionviewCell segue?

In meinem didSelectItemAt ich habe:

let monsters: Monsters! 

let mons: [Monsters] = Data().mons 
monsters = mons[indexPath.row] 

self.performSegue(withIdentifier: "DetailVC", sender: monsters) 

Antwort

2

Sie könnten eine monster Eigenschaft in DetailViewController, erstellen und dann zuweisen, wenn Sie prepare(for segue:)

// This would be a property at the top of DetailViewController 
var monster:Monster? 

dann innerhalb des VC aufrufen, die den Übergang durchführt, eine Eigenschaft erstellen für selectedMonster auf indexPath Basis zuzuweisen:

var selectedMonster:Monster? 

Dann, wenn Sie Benutzer eine Zelle auswählt:

selectedMonster = mons[indexPath.row] 

Im selben VC, würde diese Methode aufgerufen werden, wenn die performSegue(withIdentifier:) aufgerufen wird:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "DetailVC" { 
     let detailVC = segue.destination as! DetailViewController 
     detailVC.monster = selectedMonster 
    } 
} 

Möglicherweise möchten Sie überprüfen, wie Sie anrufen performSegue(withIdentifier:), in der Regel wollen Sie den Absender self, also zu sein:

performSegue(withIdentifier: "DetailVC", sender: self) 
+0

Danke so viel. Dies wurde stört mich seit Ewigkeiten – baxu

+0

@baxu - Sie sind herzlich willkommen! Froh, dass ich Helfen kann – Pierce

Verwandte Themen