ios - 在选项卡栏上 View Controller 的内容之前显示登录屏幕

标签 ios swift

我正在创建一个应用程序,默认情况下,允许用户在访客或登录状态下使用该应用程序。当用户启动应用程序时, Root View Controller 是一个带有三个选项卡的选项卡栏 Controller 。要访问其中一个选项卡的功能,用户必须首先使用电子邮件和密码进行身份验证。目前,当按下选项卡时,登录 View 是使用推送序列显示的,我不喜欢动画的外观,以及您可以在动画期间暂时看到实际登录 View 的事实。

我尝试添加一个导航 Controller 作为选项卡,然后将导航 Controller 的 Root View Controller 设置为登录页面,并连接到登录页面(我不喜欢的部分)。相反,我希望这样就没有转场,登录页面显示在底部,标签栏位于底部,当用户登录时,登录页面显示在底部,标签栏位于底部。

这是我的 TabController 类中的内容:

    func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
    if tabBarController.selectedIndex == 2 {
        if AppDelegate.isUserLoggedIn {
            let navController : UINavigationController = UINavigationController(rootViewController: self)
            navigationController!.show(navController.childViewControllers[0], sender: self)
        } else {
            let navController = viewController
            navController.performSegue(withIdentifier: "testSegue", sender: navController)
        }
    }
}

我对 Swift 还很陌生,所以请随时提供任何有用的批评

最佳答案

假设“选项卡 3”是经过身份验证的选项卡。

您要做的就是创建一个导航 Controller ,例如:

让 navController = UINavigationController(root: loginController)

如果用户已经通过身份验证,那么您编辑 Controller :

navController.viewControllers = [loginController, tabContentViewController]

这样,当用户单击第三个选项卡时,他将看到登录或“选项卡 3”内容,而没有推送动画

关于ios - 在选项卡栏上 View Controller 的内容之前显示登录屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51503461/

相关文章:

ios - 使用 Photolibrary 将 shouldAutorotate 设置为 false

ios - SwiftUI - 我可以在 iPhone 上显示标签栏,在 iPad 上显示侧边栏吗?

swift - 从现有 DispatchQueue 创建 SerialDispatchQueueScheduler 时,internalSerialQueueName 的正确用法是什么

iphone - 调用存在于多个类中的方法的最佳方法

iphone - 如何使用 Xcode 4.0.2 调试 iOS 5 设备上的崩溃?

ios - UINavigationController 大标题和多个 UIScrollViews/UITableViews

ios - 如何创建具有符合通用协议(protocol)的弱委托(delegate)的基类?

ios - 更改/动画 UITextView 中的最大行数?

swift - 将文本输入保存到设备

ios - Swift 2.1 tableView 单元格布局和内容在运行时更改