Remove TabBar item in Swift

前端 未结 5 1205
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-06 05:17

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:

相关标签:
5条回答
  • 2020-12-06 05:41

    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
        }
    }
    
    0 讨论(0)
  • 2020-12-06 05:42

    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)
    
    }
    
    0 讨论(0)
  • 2020-12-06 05:48

    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.

    0 讨论(0)
  • 2020-12-06 05:48

    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.

    0 讨论(0)
  • 2020-12-06 05:53

    better way is to use only text instead of image. choose 'space' as the text then disable that. then the user will not be able to see it. i haven't tested it but I sure it will work.

    0 讨论(0)
提交回复
热议问题