perform for change ios swift storyboard segue

ios - for - Pasar datos con segue a través de navigationController



segue swift 4 (1)

Estoy tratando de enviar datos desde un viewController a otro. He conectado ViewController a ViewController''s navigationController y luego configuré el identificador en "showItemSegue" . Me sale un error en estas dos líneas:

var detailController = segue.destinationViewController as ShowItemViewController detailController.currentId = nextId!

Ilustración de la imagen:

El código:

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! } }


El controlador de vista de destino del segue es el UINavigationController . Debe solicitar su controlador de vista superior para llegar al controlador de vista de destino real:

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! } }