Swift 如何禁用选项卡栏项?

Swift 如何禁用选项卡栏项?,swift,uitabbarcontroller,Swift,Uitabbarcontroller,对于特定的用例,是否可以在整个应用程序中隐藏或禁用选项卡栏上的选项卡栏项目 例如: 当用户登录且没有“管理员”角色时,最后一个选项卡栏项目将在整个应用程序中隐藏。当他们以管理员身份再次登录时,最后一个选项卡栏将被启用而不隐藏。如果您位于UITabBarController的源文件中,只需在viewDidLoad方法中添加以下代码即可禁用最后一项 下面的代码还假设您在选项卡栏中有UITabBarItem项。否则你知道它是什么类型的物品,所以你可以相应地施放 if let items = tabBa

对于特定的用例,是否可以在整个应用程序中隐藏或禁用选项卡栏上的选项卡栏项目

例如:
当用户登录且没有“管理员”角色时,最后一个选项卡栏项目将在整个应用程序中隐藏。当他们以管理员身份再次登录时,最后一个选项卡栏将被启用而不隐藏。

如果您位于UITabBarController的源文件中,只需在viewDidLoad方法中添加以下代码即可禁用最后一项

下面的代码还假设您在选项卡栏中有UITabBarItem项。否则你知道它是什么类型的物品,所以你可以相应地施放

if let items = tabBar.items as? [UITabBarItem] {
  if items.count > 0 {
    let itemToDisable = items[items.count - 1]
    itemToDisable.enabled = false
  }
}
更好的代码(在Swift 4中):

更好的解决方案(在Swift 5中)

Swift 5一班轮

let n = 2.   //The tab number to disable
self.tabBarController!.tabBar.items![n].isEnabled = false

如果用户不是经理,那么最好的设计是根本不显示最后一个选项卡。其中2是tabBarController中选项卡的索引
tabBarControlled?.tabBar.items?[2].isEnabled = isManager
let n = 2.   //The tab number to disable
self.tabBarController!.tabBar.items![n].isEnabled = false