【问题标题】:UITabBarController ProgrammaticallyUITabBarController 以编程方式
【发布时间】:2020-07-01 09:40:18
【问题描述】:

我的 UITabBarController 遇到问题。 我真的很确定我做了这里描述的同样的事情,但它不能正常工作: https://medium.com/@ITZDERR/uinavigationcontroller-and-uitabbarcontroller-programmatically-swift-3-d85a885a5fd0

请你看一下。 TabBarController:

import UIKit
class TabBarController: UITabBarController{

override func viewDidLoad() {
    super.viewDidLoad()

//让tabBarController = UITabBarController()

    self.tabBar.backgroundColor = .white
    self.tabBar.frame.origin.y = view.frame.size.height - CGFloat(tabBarHeight)
    self.tabBar.frame.size.height = CGFloat(tabBarHeight)
    
    let homeVC = UIViewController()
    homeVC.title = "Home"
    homeVC.tabBarItem = UITabBarItem.init(title: "Home", image: UIImage(systemName: "house.fill"), tag: 0)
    
    let tripHomeVC = TripHomeViewController()
    tripHomeVC.title = "Trips"
    tripHomeVC.tabBarItem = UITabBarItem.init(title: "Trips", image: UIImage(systemName: "globe"), tag: 1)
    
    let statsHomeVC = StatisticHomeViewController()
    statsHomeVC.title = "Statistics"
    statsHomeVC.tabBarItem = UITabBarItem.init(title: "Statistic", image: UIImage(systemName: "chart.pie.fill"), tag: 2)
    
    let settingsHomeVC = SettingsHomeViewController()
    settingsHomeVC.title = "Home"
    settingsHomeVC.tabBarItem = UITabBarItem.init(title: "Settings", image: UIImage(systemName: "gear"), tag: 3)
    
    let controllerArray = [homeVC, tripHomeVC, statsHomeVC, settingsHomeVC]
//        tabBarController.viewControllers = controllerArray


    self.viewControllers = controllerArray.map { UINavigationController(rootViewController: $0)}
    
//        view.addSubview(tabBarController.view)
  }

}

在我的 HomeController 中,我只是添加了 TabBar:

    //              Setup TabBar
    let tabBarController = TabBarController()
    self.view.addSubview(tabBarController.view)

TabBar 显示但不工作。

Screenshot

谢谢!

【问题讨论】:

  • 为什么在UITabBarController 中创建UITabBarController 没有意义?
  • 你是对的,我的错。只是改变了它,但我认为这种改变不会解决我的问题。
  • TabBar 显示但不工作是什么意思。 究竟是什么不工作?如果可能,请添加屏幕截图。你的HomeController 是rootViewController 吗?
  • 添加了屏幕截图和改进的编码。我的 HomeController 不是我的 rootViewController,在你到达 HomeController 之前,你必须登录,这是我的 rootViewController。所以你可以看到 TabBar 显示出来了,但是当你点击项目时,什么也没有发生。

标签: swift uikit uitabbarcontroller


【解决方案1】:

你少了一行

tabBarController.didMove(toParent: self)

这样就变成了

let tabBarController = TabBarController()
self.view.addSubview(tabBarController.view)
tabBarController.didMove(toParent: self)

【讨论】:

  • 试过了。不幸的是,它没有任何区别。图标已激活,但没有任何反应。
猜你喜欢
  • 2011-01-16
  • 2020-05-28
  • 2011-09-01
  • 2018-05-13
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
相关资源
最近更新 更多