在异步请求之后从AppDelegate更改初始View Controller

时间:2018-03-11 08:14:01

标签: ios swift storyboard appdelegate

我想在用户启动应用程序时更改初始视图控制器,但只有在我从服务器获取有关哪一个的信息之后才能更改。

这有点像这样:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    FirebaseManager.getUserProfile() { user in
       if user?.sports.count == 0 {  

       // present View Controller 1   

       } else {

       // present View Controller 2

       }
   }

   return true
}

调用完成后,我决定显示哪个VC,但问题是return true在开始时是同步触发的。

这会导致令人不快的用户体验,因为它会显示初始故事板(Login.storyboard,如info.plist中所配置),并且只有在请求完成后(几秒钟后),它才会变为正确的视图控制器我希望它直接更改为视图控制器,而不显示任何其他内容(即使它需要更多用户等待)。

我该如何避免这种情况?在处理这种情况时,最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

我建议使用Firebase远程配置参数。它在本地存储您的数据。你可以远程管理它。

或预先在UserDefaults FirebaseManager.getUserProfile()中存储价值。