1

我试图解释我的问题。在 appdelegate 中,我必须根据异步请求的结果选择一个 rootViewController(我使用的是 AFNetworking 框架)。事实上,我需要知道我的用户是否被分析:如果他被分析,我可以向他显示应用程序的主页,如果他不是,我必须向他显示分析视图。

在情节提要中,我将 Home 视图设置为指定的入口点,但在异步请求完成之前,始终会显示此视图。有没有办法让 appdelegate 等待响应?

4

4 回答 4

4

我认为让应用程序委托等待响应没有很好的解决方案,因为如果网络连接不佳,应用程序加载时间会很长,操作系统可能会杀死您的应用程序或用户可以将其关闭。

您可以添加一些加载视图控制器(带有动画,以便用户知道应用程序正在做某事)而不是主页控制器,并且当您收到响应时向用户呈现适当的视图(模态 segue 可以完成这项工作)。希望这有帮助

于 2014-06-04T11:57:39.110 回答
3

A better solution is to use splash screens. That is when your app gets loaded in AppDelegate, create and push a splash view controller. Which would just contain a single UIImageView covering whole screen showing your application splash image. Upon asynchronous call completion, pop that splash view controller and push your required view Controller.

Many apps use this way to download necessary asynchronous data before showing the app. So that user don't see empty screens or garbage data.

If something gets failed like internet connectivity failure or server response error, etc., Show error to user and perform error handling according to your app logic.

于 2014-06-04T12:08:26.953 回答
0

您可以以编程方式导航到根视图控制器

[self.navigationController popToRootViewControllerAnimated:YES];

这段代码可以放在结果的条件下。

或者以您的方式,我认为您创建了一个用于导航到 rootViewController 的 segue。您可以使用编程方式执行 segue

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
于 2014-06-04T12:01:31.500 回答
0

如果您使用的是 AFNetworking,只需在成功块中添加一个方法,然后将响应传递给字典参数中的该方法。检查您在方法中的响应,然后从该方法中选择您想要制作根视图控制器的控制器。

于 2014-06-04T12:05:08.010 回答