J'essaie de pousser les données d'un viewController à un autre. J'ai connecté un viewController à un autre ViewController navigationController, puis j'ai défini l'identifiant sur "showItemSegue"
. J'obtiens une erreur dans ces deux lignes:
var detailController = segue.destinationViewController as ShowItemViewController
detailController.currentId = nextId!
Illustration de l'image:
Le code:
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
nextId = itemArray?.objectAtIndex(indexPath.row).objectForKey("objectId") as? NSString
self.performSegueWithIdentifier("showItemSegue", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "showItemSegue") {
var detailController = segue.destinationViewController as ShowItemViewController
detailController.currentId = nextId!
}
}
Le contrôleur de vue de destination de la séquence est le UINavigationController
. Vous devez lui demander son contrôleur de vue de dessus pour accéder au contrôleur de vue de destination réel:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showItemSegue" {
let navController = segue.destination as! UINavigationController
let detailController = navController.topViewController as! ShowItemViewController
detailController.currentId = nextId!
}
}