Remove TabBar item in Swift
Solution 1
You want to set the viewControllers
property of your tabBarController
with an array where you excluded the particular viewController that you don't want to have anymore.
if let tabBarController = self.tabBarController {
let indexToRemove = 3
if indexToRemove < tabBarController.viewControllers?.count {
var viewControllers = tabBarController.viewControllers
viewControllers?.remove(at: indexToRemove)
tabBarController.viewControllers = viewControllers
}
}
Solution 2
For those who just want to disable one item. Use this code from @Daniele's solution. and place it in your UITabBarController class
viewDidLoad() {
let index = 0 //0 to 5
viewControllers?.remove(at: index)
}
Solution 3
Swift 5: For removing only one index in Tab Bar Controller(you can use this method in viewDidLoad and viewDidAppear both of them)
override func viewDidAppear(_ animated: Bool) {
}
override func viewDidLoad() {
super.viewDidLoad()
}
tabBarController.viewControllers?.remove(at:0) // for 0 index
tabBarController.viewControllers?.remove(at:1) // for 1 index
tabBarController.viewControllers?.remove(at:2) // for 2 index
if you have 4 index in Tab Bar and you want to remove the last 2 index
tabBarController.viewControllers?.remove(at:2)
tabBarController.viewControllers?.remove(at:2)
first line will remove the index 3rd one and you will remaining 3 from 4 and again when you remove the 2nd index it will remove again 3rd index and then you will have remain 2 index in last.
Solution 4
Swift 4.1 For removing More items Use Array
let index = [2,0]
index.forEach{viewControllers?.remove(at: $0)}
the point in the array is You Should Use Descending Order of indexes to remove to get the desired Result.
Fabian Boulegue
Nerd Geek Videogamer Mac Developer Web Developer iOS Developer Tattoo
Updated on July 13, 2022Comments
-
Fabian Boulegue almost 2 years
I currently try to find a way to remove while run the app a TabBar Item, i found a way to enable or disable it but not to complete remove it.
For disable it i do:In ViewDidLoad
if let tabBarItem = self.tabBarController?.tabBar.items?[3] as? UITabBarItem { tabBarItem.enabled = false }
This works well but still the user can see the TabBar item and i ll simply complete remove it, is there a way?
I want to trigger the TabBarItem via Parse, if i set the Parse Data to true it should show other way it should not.