【问题标题】:Add UITabBar in ViewController Swift 3(NOT TO IMPLEMENT UITabBarController)在 ViewController Swift 3 中添加 UITabBar(不实现 UITabBarController)
【发布时间】:2018-01-18 07:10:14
【问题描述】:

我成功地将一个 UITabBar 添加到我的 UIViewController。但是,当标签被标签时,我无法切换视图控制器。我使用了以下方法:

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 并隐藏了标签栏。它将控制权集中到一个新的 viewcontroller 中。 我有两个疑问:

  1. 当各自的标签栏被标签时,如何在同一视图中显示各自的视图控制器?
  2. 如何加载带有标签栏的视图控制器,并在其中显示初始视图控制器?假设要在第一个选项卡上显示的视图控制器也应该在加载带有选项卡栏的视图控制器时显示。

【问题讨论】:

    标签: ios swift3 uiviewcontroller uitabbar uitabbaritem


    【解决方案1】:

    你正在尝试public func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem)的函数是选中项的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
    

    阅读 Apple 提供的关于 UITabbarController 的基本教程。这里是关于viewControllersUITabbarController 属性的详细信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      相关资源
      最近更新 更多