ios - 在 ViewController Swift 3 中添加 UITabBar(不实现 UITabBarController)

标签 ios swift3 uiviewcontroller uitabbar uitabbaritem

我成功地向我的 UIViewController 添加了一个 UITabBar。但是,当标签被选中时,我无法切换 View Controller 。我使用了以下方法:

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. 当各个标签栏被标记时,如何在同一 View 中显示各个 View Controller ?
  2. 如何使用显示有初始 View Controller 的标签栏加载 View Controller ?假设加载带有选项卡栏的 View Controller 时,还应显示要显示在第一个选项卡上的 View Controller 。

最佳答案

您正在尝试的函数 public func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) 是所选项目的 tabbar 委托(delegate)方法,您不能使用它来设置 tabbar Controller 。

在加载到内存之前,您应该为标签栏 Controller 提供 View Controller 。

试试看:

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

的属性

关于ios - 在 ViewController Swift 3 中添加 UITabBar(不实现 UITabBarController),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45606864/

相关文章:

swift - TableView cellForRowAtIndexPath 警告

Cocoa 不调用 ViewController 函数

ios - iPhone 中的 presentViewController 时如何保持背景透明?

ios - VC之间传输数据

ios - JWPlayer 错误代码列表

ios - Swift Xcode 从闭包内的通用类型参数获取 <<error type>>

iphone - 核心数据 - 保存在后台线程并在主线程中获取

ios - 如何在 Swift 3.1 中使用 UIImagePickerControllerDelegate 获取目录(本地路径)?

ios - viewDidUnload 与 viewDidDisappear

ios - 解析iOS SDK : Dynamic cell height for PFQueryTableViewController based on results from Query