使用 UINavigationController 执行 segue(没有 IBAction)
Performing segue with UINavigationController (without IBAction)
给你看图再解释更容易。
仪表板故事板
我在名为 ContainerViewController
的容器视图中嵌入了 2 个单独的 UIViewControllers
(我只在绘图中包含了一个,另一个不相关)。
Post 故事板
NewPostViewController
显示 UIButton
呈现 TextPostViewController
。如您所见,它们都嵌入在 UINavigationControllers
中。现在,一旦调用了新 post 的完成块,我就必须呈现 ContainerViewController
并且它需要处理自己的逻辑。问题是它嵌入在 UINavigationController
中,一旦我展示它,UITaBbar
就被隐藏了。
我试过这样做:
self.performSegue(withIdentifier: "TextPostToNavContainerVC", sender: nil)
转换成功但我丢失了 UITabBar,即使在 DashboardViewController
和 ContainerViewController
我调用了:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
tabBarController?.tabBar.isHidden = false
}
我做错了什么或者有更好的方法吗?
您应该实例化选项卡栏控制器。不是视图控制器。
想象一下,您将一个初始视图控制器放在标签栏控制器之前。让你的标签栏不被推送
如果我没理解错的话。
你在做这个
Segue connect to a view controller
但你实际上应该这样做 Segue connected to a tab bar controller
您可以尝试将其添加为子项以像这样控制它的框架
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)
给你看图再解释更容易。
仪表板故事板
我在名为 ContainerViewController
的容器视图中嵌入了 2 个单独的 UIViewControllers
(我只在绘图中包含了一个,另一个不相关)。
Post 故事板
NewPostViewController
显示 UIButton
呈现 TextPostViewController
。如您所见,它们都嵌入在 UINavigationControllers
中。现在,一旦调用了新 post 的完成块,我就必须呈现 ContainerViewController
并且它需要处理自己的逻辑。问题是它嵌入在 UINavigationController
中,一旦我展示它,UITaBbar
就被隐藏了。
我试过这样做:
self.performSegue(withIdentifier: "TextPostToNavContainerVC", sender: nil)
转换成功但我丢失了 UITabBar,即使在 DashboardViewController
和 ContainerViewController
我调用了:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
tabBarController?.tabBar.isHidden = false
}
我做错了什么或者有更好的方法吗?
您应该实例化选项卡栏控制器。不是视图控制器。 想象一下,您将一个初始视图控制器放在标签栏控制器之前。让你的标签栏不被推送
如果我没理解错的话。 你在做这个 Segue connect to a view controller 但你实际上应该这样做 Segue connected to a tab bar controller
您可以尝试将其添加为子项以像这样控制它的框架
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)