2016-04-12 58 views
1

我在Swift中很难找到这个解决方案,但是我没有想出一个适用于我的解决方案。我试图根据登录到应用程序的人的权限隐藏我的“管理员”TabBarItem。我可以禁用它,但它仍然显示在栏上。我希望能够为某些人展示它并为其他人隐藏它。此外,当我打印self.tabBarController?.viewControllers我得到零。在Swift中删除/隐藏UITabBarItem

class TabBarMenuController: UITabBarController { 


    let ref = Firebase(url: "") 
    var position = "" 

    func getPosition() { 
     let userRef = ref.childByAppendingPath("users/\(ref.authData.uid)") 
     userRef.observeSingleEventOfType(.Value, withBlock: {snapshot in 
      if snapshot.value["position"] as! String != "Staff" { 
       self.position = snapshot.value["position"] as! String 

      } 
     }) 

    } 

    override func viewWillAppear(animated: Bool) { 
     getPosition() 
     print(self.tabBarController?.viewControllers) 
     if position != "Staff" { 
      if let tabBarController = self.tabBarController { 
       let indexToRemove = 3 
       if indexToRemove < tabBarController.viewControllers?.count { 
        var viewControllers = tabBarController.viewControllers 
        viewControllers?.removeAtIndex(indexToRemove) 
        tabBarController.setViewControllers(viewControllers, animated: true) 
       } 
      } 

     } 

    } 

此外,我一直在阅读,这是违反苹果的预期用途。这是真的吗?是否有更好的工作流程来完成此类功能?

回答

0

我会创建一个选项卡,打开用户的帐户,并在用户VC选项卡中有一个按钮,该选项卡仅为管理员打开一个页面。您可以使用adminButton.hidden = trueadminButton.hidden = false根据需要显示和隐藏按钮。