通过navigationController通过segue传递数据

我试图将数据从一个viewController到另一个。 我已经连接一个viewController到另一个ViewController的navigationController,然后设置标识符为"showItemSegue" 。 我在这两行中得到一个错误:

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

图像插图:

在这里输入图像说明

代码:

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

Segue的目标视图控制器是UINavigationController 。 你需要问它的顶级视图控制器来到真正的目标视图控制器:

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