Remove TabBar item in Swift

20,966

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.

Share:
20,966
Fabian Boulegue
Author by

Fabian Boulegue

Nerd Geek Videogamer Mac Developer Web Developer iOS Developer Tattoo

Updated on July 13, 2022

Comments

  • Fabian Boulegue
    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:

    enter image description here

    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.