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

标签 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 秒后进入主界面。大家有什么建议吗?

附言我是新手,如果你也能解释我如何避免这种延迟,无论在 view.didLoad 或任何函数/buttonAction 中触发转换,我将不胜感激。

最佳答案

一种方法是创建一个类,我们将其命名为RootViewController。在此 Controller 中,您将从服务器加载每个设置,并且在这里您将验证 token 或用户身份验证(即用户是否登录)。

然后 RootViewController 将确定将显示哪个 Controller (主页?身份验证屏幕?)或将替换 App Delegate 中的 UIWindow。无论您想移动到另一个屏幕做什么,至少您可以在这里获得流程。

你可以让 RootViewController 的屏幕设计与 LaunchScreen 相同,这样用户会觉得他仍在启动屏幕中,而不是在一些奇怪的地方随机画面。

希望这对您有所帮助。

关于ios - 如何在快速更改 ViewController 时消除延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56529358/

相关文章:

android - 从 GCM 迁移到最新的 FCM 但获得相同的 token

java - 我正在为 android 使用 Firebase Apple 登录

ios - 快速切换与数组匹配的模式

ios - 模块 'SocketIO' 未使用库进化支持进行编译;使用它意味着无法保证框架的二进制兼容性

ios - 无法通过手动安装来安装Mixpanel iOS SDK-找不到Mixpanel/Mixpanel.h文件

ipad - 以 HTML5 呈现的 H.264 编码 MP4 在 Safari 上播放,但在 iOS 设备上播放

ios - 使用 AVMutableComposition 拼接(合并)视频时固定方向

android - FirebaseRecyclerAdapter 不自动更新数据

ios - UIPickerView 取决于第一个组件

swift - 加入 bool 优化Swift