快速更改ViewController时如何消除延迟

时间:2019-06-10 15:31:52

标签: ios swift firebase

我的应用在ViewControllers之间移动时遇到了一些延迟。我不知道该如何解决?当我检查用户登录到Firebase时,会出现问题。我在下面发布代码:

override func viewDidLoad() {
    super.viewDidLoad()

    // Check if user is signed in!!

    if Auth.auth().currentUser != nil {

        // Move to MapController
        print("USER: SIGNED IN")
        self.moveToMain()

    } else {

        //User Not logged in
        print("USER: NOT SIGNED IN")
    }
}

因此,我可以看到在view.didLoad()之后触发该代码时会出现问题。这是问题的一部分,我想在view.didLoad()之前执行此操作,或者如果用户已登录,则以某种方式覆盖此功能。

目前,由于用户进入登录页面并在0.5秒后进入主界面,用户界面非常糟糕。有什么建议吗?

P.S。我是新手,如果您也可以解释如何在view.didLoad或任何function / buttonAction中触发过渡,如何避免这种延迟,将不胜感激。

1 个答案:

答案 0 :(得分:0)

一种实现方法是拥有一个类,我们将其命名为RootViewController。在此控制器中,您将从服务器加载每个设置,并且在此处还将验证令牌或用户的身份验证(即用户是否登录)。

然后RootViewController将确定将显示哪个控制器(“主页”?“身份验证”屏幕?)或替换“应用程序委托”中的UIWindow。无论您想移到另一个屏幕做什么,都可以从这里获得流程。

您可以使RootViewController的屏幕设计与LaunchScreen相等,以便用户感觉自己仍在启动屏幕中,而不是在一些奇怪的随机屏幕中。

希望这会有所帮助。