我已经阅读了苹果指南,我知道它说你不应该这样做,但请听我说,因为我想知道我所做的是否是不好的做法。
当我的应用程序加载时,在应用程序委托中,会进行网络调用,用于设置选项卡的顺序以及其中的内容。网络电话是这样的
WebCalls *wc = [[WebCalls alloc] init];
[wc setWebCallDidFinish:^(NSString * json) {
// set up tab order here, as well as stores the JSON in a file on the phone
// Also code here to download images and cache them on phone
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
}
[wc getData:phoneNumber];
现在这段代码很好用,但问题是应用程序启动时会发生什么
- 启动图像显示一秒钟(不是很长,有时是半秒或更短,所以很烦人)
- 解析 json 并下载图像等时屏幕变黑约 2 秒
- 然后显示第一个选项卡控制器
我想要的是启动屏幕和第一个屏幕之间的无缝过渡,因此用户永远不会看到黑屏。
我想做的是这样的
在给出的答案中,这个人将一个视图向前推为启动屏幕。将视图向前推,然后在该屏幕中执行获取 json 数据并下载图像的网络调用,然后关闭视图并使 tabcontroller 视图成为主视图,这是不好的做法吗?
或者我还能如何防止这种延迟?在 AppDelegate 中像这样进行足够大的网络调用是不好的做法吗?
如果在进行后台加载时将视图向前推进是一种不好的做法,那么您还有什么建议?如果我先将 tabController 设为主 rootViewController 并在显示的第一个选项卡中执行 webCall,然后在此 Web 调用完成时更新选项卡,会更好吗?我正在考虑这个,但是在进行网络通话后,标签顺序可以是任何顺序,所以不确定首先显示哪个标签。
将不胜感激您的意见