Ios 以编程方式将选项卡添加到选项卡栏
我有一个带有Ios 以编程方式将选项卡添加到选项卡栏,ios,swift,uitabbarcontroller,uitabbar,Ios,Swift,Uitabbarcontroller,Uitabbar,我有一个带有UITabBarController作为初始视图控制器的应用程序 目前,我正在Storyboard中执行所有操作,但我希望根据用户是否登录,以编程方式向选项卡栏添加一个选项卡 我做了一个TestViewController来测试这一点。现在我有两个标签(如下图所示)。我想以编程方式在右侧放置第三个选项卡。我将此代码放在AppDelegate的didFinishLaunching方法中。根据打印语句,视图控制器被添加到选项卡栏,但它没有出现在选项卡栏中,然后应用程序加载 有什么建议吗
UITabBarController
作为初始视图控制器的应用程序
目前,我正在Storyboard中执行所有操作,但我希望根据用户是否登录,以编程方式向选项卡栏添加一个选项卡
我做了一个TestViewController
来测试这一点。现在我有两个标签(如下图所示)。我想以编程方式在右侧放置第三个选项卡。我将此代码放在AppDelegate的didFinishLaunching
方法中。根据打印语句,视图控制器被添加到选项卡栏,但它没有出现在选项卡栏中,然后应用程序加载
有什么建议吗
func addTabTEST() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let tabController = storyboard.instantiateViewControllerWithIdentifier("RootTabController") as! UITabBarController
let TestVC = storyboard.instantiateViewControllerWithIdentifier("TestViewController") as! TestViewController
let icon = UITabBarItem(title: "test", image: nil, selectedImage: nil)
TestVC.tabBarItem = icon
print("TAB CONTROLLERS 1: \(tabController.viewControllers)")
tabController.addChildViewController(TestVC)
tabController.viewControllers![2] = TestVC
print("TAB CONTROLLERS 2: \(tabController.viewControllers)")
}
这是给swift 4的
self.window=UIWindow(框架:UIScreen.main.bounds)
设nav1=UINavigationController()
让mainStoryboard:UIStoryboard=UIStoryboard(名称:“Main”,bundle:nil)
如果您不想使用
UIStoryboard
,并且有三个名为oneVC
、twoVC
和threeVC
的视图控制器,则可以使用(适用于iOS 14.2的Swift 5.3)
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let nav1 = UINavigationController()
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let first: ViewController = mainStoryboard.instantiateViewControllerWithIdentifier("ViewController") as! ViewController
nav1.viewControllers = [first]
nav1.setNavigationBarHidden(true, animated: true)
nav1.title = "first"
let nav2 = UINavigationController()
let second: SecondViewController = mainStoryboard.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController
nav2.viewControllers = [second]
nav2.setNavigationBarHidden(true, animated: true)
nav2.title = "second"
let nav3 = UINavigationController()
let third: ThirdViewController = mainStoryboard.instantiateViewControllerWithIdentifier("ThirdViewController") as! ThirdViewController
nav3.viewControllers = [third]
nav3.setNavigationBarHidden(true, animated: true)
nav3.title = "third"
let tabController = UITabBarController()
tabController.viewControllers = [nav1,nav2,nav3]
tabController.selectedIndex = 0
self.window!.rootViewController = tabController
self.window?.makeKeyAndVisible()
let first = mainStoryboard.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController
nav1.viewControllers = [first]
nav1.setNavigationBarHidden(true, animated: true)
nav1.title = "first"
let nav2 = UINavigationController()
let second: HomeViewController = mainStoryboard.instantiateViewController(withIdentifier: "HomeViewController2") as! HomeViewController2
nav2.viewControllers = [second]
nav2.setNavigationBarHidden(true, animated: true)
nav2.title = "second"
let nav3 = UINavigationController()
let third = mainStoryboard.instantiateViewController(withIdentifier: "HomeViewController3") as! HomeViewController3
nav3.viewControllers = [third]
nav3.setNavigationBarHidden(true, animated: true)
nav3.title = "third"
let tabController = UITabBarController()
tabController.viewControllers = [nav1,nav2,nav3]
tabController.selectedIndex = 0
self.window!.rootViewController = tabController
self.window?.makeKeyAndVisible()
let window = UIWindow(frame: UIScreen.main.bounds)
window.backgroundColor = .systemBackground
self.window = window
// Put image path if you want to have an image on your TabBar for this view controller
self.oneVC?.tabBarItem = UITabBarItem(title: "One", image: nil, selectedImage: nil)
self.twoVC?.tabBarItem = UITabBarItem(title: "Two", image: nil, selectedImage: nil)
self.threeVC?.tabBarItem = UITabBarItem(title: "Three", image: nil, selectedImage: nil)
let tabController = UITabBarController()
tabController.viewControllers = [oneVC, twoVC, threeVC]
tabController.selectedIndex = 0
self.window!.rootViewController = tabController
self.window?.makeKeyAndVisible()