iOS:在 UITabbarController 中显示登录 View Controller 或 "another" View Controller ?

标签 ios xcode swift uitabbarcontroller uitabbaritem

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

我希望在选项卡内显示登录 View Controller ,而不是模态显示。如何做到这一点以及如何在用户登录后使用其他 View Controller “重新加载”标签栏?

最佳答案

我会通过创建 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())
    ]
  }
}

关于iOS:在 UITabbarController 中显示登录 View Controller 或 "another" View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29073992/

相关文章:

ios - 如何在 Swift 中替换 UISplitViewController 中的 Detail?

swift - 在演示过程中显示 UIAlertController

swift - CloudKit 应用程序数据未显示在表格 View 中

ios - 如何在 LLDB for iOS 中找到堆栈跟踪的地址

xcode - 针对目标 macOS 10.15 使用 Xcode 12 构建错误

ios - 尝试镜像 Apple Watch 屏幕进行演示

iphone - 特定月份和年份的 NSFetchRequest

iphone - 从在线 Plist 文件中获取字符串?

javascript - 防止网站在 WebView 中加载并在浏览器中打开

ios - 在 iOS 应用程序中添加应用程序事件会产生未声明的标识符 'AppEvent'