在异步请求后在AppDelegate中选择RootViewController
-
21-12-2019 - |
题
我试着解释我的问题。在AppDelegate中,我必须根据异步请求的结果选择rootViewController(我正在使用afnetworking框架)。事实上,我需要知道我的用户是否是概括
在故事板上,我将归属视图设置为指定的入口点,但以这种方式,始终显示此视图,直到异步请求完成。有没有办法使AppDelegate等待响应?
解决方案
我认为没有好的解决方案让应用程序委托等待响应,因为如果网络连接将糟糕的应用程序加载时间将是很长的并且操作系统可以杀死您的应用程序或者用户可以关闭它。
您可以添加一些加载视图控制器(使用动画,因此用户会知道该应用程序正在做某事)而不是主回家,当您收到响应时,将对用户的适当视图(模态SEGUE可以执行作业)。 希望这有助于
其他提示
更好的解决方案是使用Splash屏幕。也就是说,当您的应用程序在AppDelegate中加载时,创建和按下Splash View Controller。它只包含一个覆盖整个屏幕的单个UIImageView,显示您的应用程序飞溅图像。在异步呼叫完成时,弹出闪烁视图控制器并按下所需的视图控制器。
许多应用程序使用这种方式在显示应用程序之前下载必要的异步数据。因此,用户没有看到空屏幕或垃圾数据。
如果某些内容失败,如Internet连接失败或服务器响应错误等,请按照您的应用程序逻辑显示用户的错误并执行错误处理。
您可以以
编程方式地导航到根视图控制器[self.navigationController popToRootViewControllerAnimated:YES];
.
此代码可以放在结果的条件下。
或在您的方式中,我认为您是为rootViewController导航的SEGUE。您可以使用
编程方式执行SEGUE- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
. 如果您使用的是afnetworking,只需在成功块中添加方法,并将响应传递到字典的参数中的该方法。检查方法中的响应,然后从该方法中选择要使根视图控制器的控制器。