通过navigationController通过segue传递数据

Pet*_*Pik 35 storyboard ios segue swift

我正在尝试将数据从一个viewController推送到另一个.我已将viewController连接到另一个ViewController的navigationController,然后将标识符设置为"showItemSegue".我在这两行中出错:

var detailController = segue.destinationViewController as ShowItemViewController
detailController.currentId = nextId!
Run Code Online (Sandbox Code Playgroud)

图示:

在此输入图像描述

代码:

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

}
Run Code Online (Sandbox Code Playgroud)

vac*_*ama 68

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!
    }
}
Run Code Online (Sandbox Code Playgroud)