Swift 使用UINavigationController执行segue(不带iAction)

Swift 使用UINavigationController执行segue(不带iAction),swift,uiviewcontroller,uinavigationcontroller,storyboard,segue,Swift,Uiviewcontroller,Uinavigationcontroller,Storyboard,Segue,给你看一张图然后解释会更容易 仪表板故事板 我在容器视图中嵌入了两个独立的uiviewcontroller(我在图形中只包含了一个,另一个不相关),名为ContainerViewController 后情节提要 NewPostViewController显示一个显示TextPostViewController的ui按钮。如您所见,它们都嵌入到UINavigationControllers中。现在,在调用新post的完成块之后,我必须展示ContainerViewController,它需要处理

给你看一张图然后解释会更容易

仪表板故事板

我在容器视图中嵌入了两个独立的
uiviewcontroller
(我在图形中只包含了一个,另一个不相关),名为
ContainerViewController

后情节提要

NewPostViewController
显示一个显示
TextPostViewController
ui按钮。如您所见,它们都嵌入到
UINavigationControllers
中。现在,在调用新post的完成块之后,我必须展示
ContainerViewController
,它需要处理自己的逻辑。问题是它嵌入在
UINavigationController
中,一旦我呈现它,
uitabar
就隐藏了

我试着这样做:

self.performsgue(带有标识符:“TextPostToNavContainerVC”,发件人:nil)

转换成功,但我正在丢失UITabBar,即使在
仪表板视图控制器
容器服务控制器
中,我调用了:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    tabBarController?.tabBar.isHidden = false

}

我做错了什么,或者有更好的方法吗?

您应该实例化选项卡栏控制器。不是视图控制器。 假设您将初始视图控制器置于选项卡栏控制器之前。使选项卡栏不被推

如果我理解正确的话。 你在这么做吗
但实际上应该这样做

您可以尝试将其作为子对象添加,以控制其帧,如下所示

let textPost = self.storyboard?.instantiateViewController(withIdentifier: "containerID") as! TextPostToNavContainerVC
textPost.view.frame =  CGRect(x:20,y:0,width:self.view.frame.width,height:self.view.frame.height-50)
self.view.addSubview(nvc.view)
self.addChildViewController(textPost)
textPost.didMove(toParentViewController: self)

你能告诉我怎么做吗?整个项目都基于多个情节串连板,我使用情节串连板引用,因此更容易管理视图控制器。你想看哪个故事板?天哪!对我终于明白你说的了。很抱歉,我在9个小时的编码后有点慢。是的,这就是我想做的!非常感谢。