使用标签栏显示 viewcontroller

Present viewcontroller with tabbar

我在 AppDelegate 中使用 4 个视图控制器(使用 .xib)以编程方式创建了 UITabBarController。当用户点击 ViewController (VC-A) 上的某个按钮时,它会显示另一个 VC (VC-B) 和覆盖的标签栏。所以我想 VC-B 在按钮上有一个标签栏。

我尝试添加 VC-B 作为 tabbarcontroller 的子项。我尝试在两者上使用 .present(vc) 和 .show(vc):VC-A 和 VC-A.TabBarController

在 AppDelegate 中创建控制器:

 let controllers = [tabViewController1,tabViewController2,tabViewController3,tabViewController4]
 tabBarController.viewControllers = controllers
 window?.rootViewController = tabBarController

出现在 VC-A

self.tabBarController?.present(controller, animated: false, completion: nil)

右键单击并从情节提要中的标签栏控制器拖动到 VC-B。这应该在 VC-A 和 VC-B 的底部创建一个选项卡来回移动而无需实现任何后端代码,除非你想动画

解决办法是把每一个VC嵌入到navigationController中,然后添加到TabBarController中。

let vc1 = ViewController1()

let navController1 = UINavigationController(rootViewController: vc1)
navController.isNavigationBarHidden = true

let controllers = [navController1, navController2, navController3, navController4]
tabBarController.viewControllers = controllers 

window?.rootViewController = tabBarController

然后调用

self.navigationController?.pushViewController(controller, animated: true)

用标签栏

显示VC

我将按图片底部的红色登录按钮尝试登录。 登录按钮 => "로그인"

之后,登录。

let moreVC = self.storyboard?.instantiateViewController(withIdentifier: "MoreViewController") as! MoreViewController

                moreVC.definesPresentationContext = true
                moreVC.modalPresentationStyle = .fullScreen
                let navController = UINavigationController(rootViewController: moreVC)

                self.present(navController, animated: true, completion: nil)

如果登录没有报错,会调用上面的代码显示登录完成的画面

如果流程按照上面的代码进行,则会出现此屏幕。

显示的屏幕不是全屏,底部的标签栏也没有了。我要的画面就是下面的画面

如何在呈现屏幕时呈现标签栏?