【问题标题】:Present viewcontroller with tabbar显示带有标签栏的视图控制器
【发布时间】:2019-05-02 19:11:47
【问题描述】:

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

我尝试将 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)

【问题讨论】:

  • 您对present 的实际工作方式感到困惑。它实际上在当前 VC 之上呈现了一个 VC。所以它覆盖了整个屏幕,你的 tabBar 将不可见。如果要保留 tabBar,请将 tabBarController 嵌入到 navigationController 中并改用push

标签: swift uitabbarcontroller tabbar


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    解决方法是将每个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(控制器,动画: 真的)

    用标签栏显示VC

    【讨论】:

      【解决方案3】:

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

      之后,登录。

      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)
      

      如果登录没有错误,登录完成时会调用上面的代码显示屏幕。

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

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

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

      【讨论】:

      • 我也有同样的问题...但您只需在答案部分提出问题...
      猜你喜欢
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 2017-07-20
      • 2013-02-12
      相关资源
      最近更新 更多