iOS:在UITabbarController中显示登录viewcontroller或“另一个”viewcontroller?

时间:2015-03-16 10:00:50

标签: ios xcode swift uitabbarcontroller uitabbaritem

我有一个带有5个标签的标签栏。
其中3个选项卡需要通过帐户进行身份验证。 我知道一种解决方案是在按下其中一个选项卡时显示模态视图控制器。

我希望在选项卡内部显示登录viewcontroller,而不是以模态方式显示它。如何做到这一点以及如何重新加载"一旦用户登录,tabbar与其他viewcontrollers一起使用?

1 个答案:

答案 0 :(得分:1)

我会通过创建UINavigationController的子类来完成此操作,该子类接收UIViewController以显示用户是否已登录,并在另一种情况下显示登录页面。

class CustomNavController:UINavigationViewController {
  let loggedInViewController:UIViewController
  init(loggedInVC:UIViewController) {
    loggedInViewController = loggedInVC
    if (userLoggedIn) {
      onLogin()
    } else {
      onLogout()
    }
    //setup listeners for authentication
    super.init()
  }
  onLogout () {
    self.viewControllers = [AuthenticationVC()]
  }
  onLogin () {
    self.viewControllers = [loggedInViewController]
  }
}


//code for setting up your UITabBarViewController
class MyTabbar:UITabBarViewController {
  init() {
    viewControllers = [
      FirstVC(), 
      SecondVC(),
      CustomNavController(ThirdVC()), 
      CustomNavController(ForthVC()), 
      CustomNavController(FifthVC())
    ]
  }
}