在ViewController Swift 3中添加UITabBar(不执行UITabBarController)

问题描述:

我成功地将UITabBar添加到了我的UIViewController中。但是,当选项卡为选项卡时,我无法切换视图控制器。我用以下方法:在ViewController Swift 3中添加UITabBar(不执行UITabBarController)

public func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 

    switch item.tag { 
    case 1 : 
      var storyboard = UIStoryboard(name: "Main", bundle: nil) 
      let viewController = storyboard.instantiateViewController(withIdentifier: "HardwareViewController") as! HardwareViewController 
      self.addChildViewController(viewController) 
     break 
    case 2 : 

self.performSegue(withIdentifier : IDENTIFIER_SEGUE_SYSTEMVC, sender : nil) 
     break 
    case 3 : 

     var storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let viewController = storyboard.instantiateViewController(withIdentifier: "SystemViewController") as! SystemViewController 
     self.view.insertSubview(viewController.view!, belowSubview: self.tabBar) 
     break 
    case 4 : 

     var storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let viewController = storyboard.instantiateViewController(withIdentifier: "HardwareViewController") as! HardwareViewController 
     self.view.insertSubview(viewController.view!, belowSubview: self.tabBar) 
     break 
    case 5 : 

     var storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let viewController = storyboard.instantiateViewController(withIdentifier : "SystemViewController") as! SystemViewController 
     self.view.insertSubview(viewController.view!, belowSubview: self.tabBar) 
     break 
    default: 
     break 
    } 
} 

但是,这些都没有工作。 Segue提供了一个新的ViewController和Tabbar隐藏功能。它将所有控件集中到一个新的视图控制器中。 我有2个疑惑:

  1. 如何显示在同一视图各自viewcontrollers当各个标签栏的标签?
  2. 如何使用tabbar加载视图控制器并显示初始视图控制器?可以说,视图控制器显示在第一个选项卡上时,也应该显示带有标签栏的视图控制器加载。

您试图使用的功能public func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem)是选定项目的tabbar委托方法,您可能不会使用它来设置tabbar控制器。

在加载到内存之前,应该将视图控制器提供给tabbar控制器。

试试这个,看看:

let viewController1 = storyboard.instantiateViewController(withIdentifier: "HardwareViewController") as? HardwareViewController 
    let viewController2 = storyboard.instantiateViewController(withIdentifier: "SystemViewController") as! SystemViewController 
    let viewController3 = storyboard.instantiateViewController(withIdentifier: "HardwareViewController") as! HardwareViewController 
    let viewController4 = storyboard.instantiateViewController(withIdentifier : "SystemViewController") as! SystemViewController 
    let viewController3 = storyboard.instantiateViewController(withIdentifier: "HardwareViewController") as! HardwareViewController 

    var tabbarControllers = [viewController1, viewController2, viewController3, viewController4, viewController5] 

    yourtabbarController.viewControllers = tabbarControllers 
    // Now load your tabbar controller 

通过这个基础教程苹果大约走UITabbarController。这里有关于viewControllers属性的详细信息UITabbarController