使用UINavigationController执行segue(不带IBAction)

时间:2018-06-04 15:01:03

标签: swift uiviewcontroller uinavigationcontroller storyboard segue

向您展示图纸然后解释会更容易。

enter image description here

信息中心故事板

我有2个单独的UIViewControllers(我在图中只包含一个,另一个不相关)嵌入在名为ContainerViewController的容器视图中。

发布故事板

NewPostViewController显示UIButton,显示TextPostViewController。如您所见,所有这些都嵌入在UINavigationControllers中。现在,一旦调用新帖子的完成块,我必须呈现ContainerViewController并且它需要处理它自己的逻辑。问题是它已嵌入UINavigationController中,一旦我出现,UITaBbar就会被隐藏。

我试着这样做:

self.performSegue(withIdentifier: "TextPostToNavContainerVC", sender: nil)

转换成功但我失去了UITabBar,即使在DashboardViewControllerContainerViewController我打电话:

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

}

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

2 个答案:

答案 0 :(得分:1)

您应该实例化标签栏控制器。不是视图控制器。 想象一下,您将初始视图控制器放在标签栏控制器之前。使标签栏不被推送

如果我没有正确理解它。 你这样做 enter image description here 但实际上你应该这样做Segue connect to a view controller

答案 1 :(得分:0)

您可以尝试将其添加为儿童,以便像这样控制它的框架

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)