Swift 使用选项卡栏显示viewcontroller

Swift 使用选项卡栏显示viewcontroller,swift,uitabbarcontroller,tabbar,Swift,Uitabbarcontroller,Tabbar,我在AppDelegate中用4个视图控制器(使用.xib)以编程方式创建了UITabBarController。当用户点击ViewController(VC-A)上的某个按钮时,它会显示另一个VC(VC-B)和覆盖的选项卡栏。所以我想在VC-B的按钮上有一个选项卡 我尝试将VC-B添加为tabbarcontroller的子级。我试着在vc-A和vc-A.TabBarController上同时使用.present(vc)和.show(vc) 在AppDelegate中创建控制器: let co

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

我尝试将VC-B添加为tabbarcontroller的子级。我试着在vc-A和vc-A.TabBarController上同时使用.present(vc)和.show(vc)

在AppDelegate中创建控制器:

 let controllers = [tabViewController1,tabViewController2,tabViewController3,tabViewController4]
 tabBarController.viewControllers = controllers
 window?.rootViewController = tabBarController
在VC-A中呈现

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

右键单击并从序列图像板中的tabbar控制器拖动到VC-B。这应该会在VC-a和VC-B的底部创建一个选项卡,以便在不需要执行任何后端代码的情况下来回移动,除非您想设置动画

右键单击并从序列图像板中的tabbar控制器拖动到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(控制器,动画: (对)


要使用tabbar显示VC,解决方案是将每个VC嵌入navigationController,然后添加到tabbar控制器

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(控制器,动画: (对)

要使用tabbar显示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)
如果登录过程中没有出现错误,则在登录完成时将调用上述代码以显示屏幕

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

显示的屏幕不是全屏,底部的选项卡栏不见了。我想要的屏幕是下面的屏幕

如何在显示屏幕时显示选项卡栏?

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

之后,登录

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)
如果登录过程中没有出现错误,则在登录完成时将调用上述代码以显示屏幕

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

显示的屏幕不是全屏,底部的选项卡栏不见了。我想要的屏幕是下面的屏幕


如何在显示屏幕时显示选项卡栏?

您对
present
的实际工作方式感到困惑。它实际上在当前VC上显示了一个VC。因此它覆盖了所有屏幕,您的选项卡栏将不可见。如果您想保留选项卡栏,请将选项卡栏控制器嵌入导航控制器中,然后使用
推送
Instead您对
present
的实际工作方式感到困惑。它实际上是在当前VC之上呈现一个VC。因此它覆盖了所有屏幕,您的选项卡栏将不可见。如果您想保留选项卡栏,请将选项卡栏控制器嵌入navigationController中,并使用
push
Instead也有同样的问题……但您需要在回答部分提问…我也有同样的问题…但你只是在回答部分提问。。。