ios - 通过 navigationController 使用 segue 传递数据

标签 ios swift storyboard segue

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

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

图片说明:

enter image description here

代码:

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 的目标 View Controller 是 UINavigationController。您需要询问它的顶 View Controller 才能到达真正的目标 View Controller :

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

关于ios - 通过 navigationController 使用 segue 传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26951195/

相关文章:

ios - 更新 CoreData 中的记录时出现问题

ios - Storyboard中的 UIGestureRecognizer 可以使用多个 View 吗?

wpf - 如何在属性上触发 Storyboard

ios - 如何从不在 Storyboard 中但以编程方式创建的 View Controller 呈现 "main" Storyboard 中的 View Controller ?

swift - 为什么不 becomeFirstResponder 在警报消息文本字段上触发软键盘

ios - iOS11字体显示不正确

ios - 单击uiimageview时如何获取图像名称?

objective-c - 如何刷新导航栏以便显示最新标题?

ios - 在多次打开应用程序后,弹出窗口要求用户对我的应用程序进行评分?

ios - 从另一个 View Controller 快速修改一个变量