在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个疑惑:
- 如何显示在同一视图各自viewcontrollers当各个标签栏的标签?
- 如何使用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