目前我有一个VC1
类型的UITableViewController
嵌入到UINavigationController
中。当用户选择一个单元格时,它也会执行push
类型的VC2
segue toUITableViewController
segue toVC1
。这很好,因为导航栏仍然存在。
但是在UIBarButtonItem
中,导航栏中有一个VC2
,点击后,它也会切换到UIBarButtonItem
,执行不同的操作,但它使用的菜单布局完全相同。
使用VC2
分段到modal
,我喜欢执行modal
分段来区分这两个操作。
我知道UINavigationController
段包含了整个屏幕,任何顶部的条都将被删除。
我回答了这个问题:Modal segue, navigation bar dissapears
其中一个answers演示了如何在prepareForSegue
中嵌入UINavigationController
,因此我遵循它并实现了:
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if segue.identifier == "AddSegue"
{
let navigationController: UINavigationController = segue.destination as! UINavigationController
var addVC: VC2 = VC2()
addVC = navigationController.viewControllers[0] as! VC2
}
}
但是,我得到了一个错误:
无法将“VC2”类型的值强制转换为
'UINavigationController'
如何在
prepareForSegue
中正确嵌入,因为我需要在不同的视图控制器之间传递数据。这是我的故事板:
最佳答案
与之相交的是您的VC2
,而不是导航控制器。您需要更新"AddSegue"
段以指向导航控制器,然后将您的VC2
链接为导航控制器的根视图控制器。
如果你张贴你的故事板,我可以给你更多的细节如何做到这一点。
编辑:这里是你应该如何设置你的故事板。可能会有点奇怪,因为VC2有两个父导航控制器,但应该没问题。
关于ios - 如何在prepareForSegue中嵌入UINavigationController?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43152377/