显示带有选项卡的视图控制器

3
我在AppDelegate中以编程方式创建了UITabBarController,并使用4个视图控制器(.xib文件)。当用户在ViewController(VC-A)上点击某个按钮时,它会呈现另一个VC(VC-B)并覆盖标签栏。因此,我希望VC-B在按钮上具有选项卡栏。
我尝试将VC-B添加为选项卡控制器的子级。我尝试在VC-A和VC-A.TabBarController上同时使用.present(vc)和.show(vc)。
在AppDelegate中创建控制器:
 let controllers = [tabViewController1,tabViewController2,tabViewController3,tabViewController4]
 tabBarController.viewControllers = controllers
 window?.rootViewController = tabBarController

presenting in VC-A

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

你对present的实际工作原理感到困惑。它实际上是在当前视图控制器之上呈现一个视图控制器。因此,它会覆盖整个屏幕,导航栏将不可见。如果你想保留导航栏,可以将tabBarController嵌入到navigationController中,并使用push方法来实现。 - Galo Torres Sevilla
3个回答

0
解决方法是将每个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)

以显示带有选项卡的视图控制器


0
在Storyboard中,从Tab Bar Controller右键拖动到VC-B。这样就会在VC-A和VC-B的底部创建一个选项卡,可以来回切换,而无需实现任何后端代码,除非你想要添加动画效果。

0

enter image description here

我会按照图片底部的红色登录按钮,并尝试登录。 登录按钮 => “로그인”
之后,请登录。
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)

如果登录过程没有错误,上述代码将被调用以显示登录完成后的屏幕。

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

enter image description here

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

enter image description here

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

我也有同样的问题...但你只是在答案部分提出了问题... - Wahab Khan Jadon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接