使用登录屏幕和 TabController 登录的正确技术

Posted

技术标签:

【中文标题】使用登录屏幕和 TabController 登录的正确技术【英文标题】:Proper Technique of sigining in with a Login Screen and TabController 【发布时间】:2016-10-30 02:28:05 【问题描述】:

我创建了我的应用程序的登录屏幕,在我的 AppDelegate.swift 文件中有 rootview 控制器。但我还使用情节提要创建了一个 TabController 作为应用程序的入口点。经过几次思考,我找到了一个解决方案,想知道这是否是正确的方法。我希望 tabController 成为应用程序的 rootview 控制器。但是 tabController 应该仅在用户登录时显示。如果用户未登录,则调用登录屏幕,这是一个允许用户登录或注册应用程序的导航控制器。它从服务器接收令牌并转到 tabController。如果用户有令牌,则默认屏幕是选项卡控制器,如果不调用登录屏幕。我想知道我的方法是否正确?

现在在我的 Appdelegate.swift 文件中,我将名为 WelcomeHomeController.swift 的登录屏幕定义为登录屏幕,但我不希望 rootviewcontroller 成为默认屏幕。我还应该在 AppDelegate.swift 类中定义 rootViewController 吗?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 

        let welcomeHomeController:UIViewController = WelcomeHomeController(nibName: nil, bundle: nil)
        welcomeHomeController.view.backgroundColor = UIColor.whiteColor()
        let navController:UINavigationController = UINavigationController(rootViewController: welcomeHomeController)

        //create window
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        self.window?.backgroundColor = UIColor.darkGrayColor()
        self.window?.rootViewController = navController
        self.window!.makeKeyAndVisible()
  

我想要一些帮助或如何完成此操作的示例。

【问题讨论】:

【参考方案1】:

我经常这样做:创建一个RedirectViewController 作为初始视图控制器,它的 UI 与启动画面完全相同。在这个控制器中,我将调用 Api 来检查用户是否有效,然后决定哪个是下一个根视图控制器,在你的情况下它将是 WelcomeHomeControllerTabViewController

【讨论】:

请提供示例代码示例。这里的启动画面是指您登录后看到的页面吗? 无启动画面 = LauchScreen :这是用户在打开应用程序时看到的加载视图

以上是关于使用登录屏幕和 TabController 登录的正确技术的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Authentication 从登录屏幕到登录屏幕使用 Google 登录和注销

注销和登录后屏幕变黑

带有登录屏幕的反应导航

iPhone 主屏幕 Web 应用程序和保持登录状态

如果用户在登录屏幕中按下复选标记,请记住登录用户名和密码

如何阻止Firebase用户登录到错误的登录屏幕