加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift 3 – 将segue推送到导航控制器

发布时间:2020-12-14 05:27:41 所属栏目:百科 来源:网络整理
导读:在我的故事板中,我有一个View Controller,我还有一个导航控制器和另一个名为HistoryController的View Controller.导航控制器和HistroyController有一个关系“根视图控制器” 我的第一个视图控制器上有一个按钮,该按钮有一个推送到导航控制器的按钮. 我在第一
在我的故事板中,我有一个View Controller,我还有一个导航控制器和另一个名为HistoryController的View Controller.导航控制器和HistroyController有一个关系“根视图控制器”

我的第一个视图控制器上有一个按钮,该按钮有一个推送到导航控制器的按钮.

我在第一个视图控制器中有这个代码来准备segue:

override func prepare(for segue: UIStoryboardSegue,sender: Any?) {

        if let viewController = segue.destination as? HistoryController {
            viewController.detailItem = barcodeInt as AnyObject
        }

    }

我的问题是当我运行我的代码并按下我的第一个控制器中的按钮时,我收到此错误:

Could not find a navigation controller for segue 'HistorySegue'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.'

我的问题是,为什么我会收到此错误,我该如何解决?

我尝试了以下内容

override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
        if let navVC = segue.destinationViewController as? UINavigationController{
            if let historyVC = navVC.viewControllers[0] as? HistoryController{
                historyVC.detailItem = barcodeInt as AnyObject
            }
        }
    }

我也试过了

override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
    if let nav = segue.destination as? UINavigationController {
        if let vc = nav.visibleViewController as? HistoryController {
            vc.detailItem = barcodeInt as AnyObject
        }
    }
}

我仍然得到同样的错误:

Could not find a navigation controller for segue 'HistorySegue'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.'
您需要将源视图控制器嵌入到导航控制器中,或将segue类型从推送更改为其他内容.此外,尝试将目标控制器转换为UINavigationController以防止在初始控制器之后出现另一个错误(如果已修复):
override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
        if let navVC = segue.destinationViewController as? UINavigationController{
            if let historyVC = navVC.viewControllers[0] as? HistoryController{
                historyVC.detailItem = barcodeInt as AnyObject
            }
        }
    }

看看它是否适合你.

编辑:更新了上面的代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读