删除Swift中的TabBar项

Fab*_*gue 12 tabbar uitabbarcontroller ios swift

我目前试图找到一种方法删除,同时运行应用程序TabBar项目,我找到了启用或禁用它的方法,但没有完成删除它.

为了禁用它我做:

在此输入图像描述

在ViewDidLoad中

if let tabBarItem = self.tabBarController?.tabBar.items?[3] as? UITabBarItem {
            tabBarItem.enabled = false
}
Run Code Online (Sandbox Code Playgroud)

这很好,但仍然用户可以看到TabBar项目,我只是完成删除它,有没有办法?

我想通过Parse触发TabBarItem,如果我将Parse Data设置为true,它应该显示不应该的其他方式.

Dan*_*ele 24

您希望使用数组设置您的viewControllers属性,在tabBarController该数组中排除了您不想再拥有的特定viewController.

if let tabBarController = self.tabBarController {
    let indexToRemove = 3
    if indexToRemove < tabBarController.viewControllers?.count {
        var viewControllers = tabBarController.viewControllers
        viewControllers?.remove(at: indexToRemove)
        tabBarController.viewControllers = viewControllers
    }
}
Run Code Online (Sandbox Code Playgroud)


Suh*_*aib 8

对于那些只想禁用一个项目的人.使用@ Daniele解决方案中的此代码.并将它放在您的UITabBarController类中

viewDidLoad() {

let index = 0 //0 to 5
viewControllers?.remove(at: index)

}
Run Code Online (Sandbox Code Playgroud)


Sha*_*med 5

Swift 5:用于仅删除选项卡栏控制器中的一个索引(您可以在 viewDidLoad 和 viewDidAppear 中使用此方法)

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
Run Code Online (Sandbox Code Playgroud)

如果选项卡栏中有 4 个索引并且您想删除最后 2 个索引

tabBarController.viewControllers?.remove(at:2)
tabBarController.viewControllers?.remove(at:2)
Run Code Online (Sandbox Code Playgroud)

第一行将删除索引第三个,您将从 4 个索引中剩下 3 个,当您删除第二个索引时,它将再次删除第三个索引,然后您将在最后留下 2 个索引。

其他方式

//MARK: - Function Call
removeTab(at: 4)

//MARK: - Method
func removeTab(at index: Int) {
    if self.viewControllers?.count ?? 0 >= index {
        self.viewControllers?.remove(at: index)
    }
}
Run Code Online (Sandbox Code Playgroud)