我的应用程序需要来自服务器的数据才能运行。它首先做的是显示一个视图控制器(LoadingViewController),负责检查数据是否保存到我的PersistentStoreCoordinator。如果数据未在本地缓存,它将从我的服务器获取并缓存它,并发布LoadingViewController正在侦听的通知。当该通知发出时,LoadingViewController使用带有翻转动画的presentModalViewController呈现应用程序的MainViewController。到目前为止,这么好......没有错误。
但是,如果应用程序加载并确定数据已缓存 - presentModalViewController不起作用,并且主应用程序视图永远不会出现。没有错误。我甚至已经将“按钮”添加到“加载”视图中,该按钮在按下时执行相同的代码并且该死的东西有效。
我很怀疑它与它的时间有关,但是我无法知道如果数据已经在本地缓存,我可以做些什么来确保用翻转动画显示视图。有什么建议吗?
答案 0 :(得分:1)
如果你有一个深层次的视图控制器视图子视图,那么总是尝试立即显示viewcontroller,其视图直接添加到你的iPhone应用程序的窗口。
例如我有4个级别的视图 窗口> vc1的观点> vc2的观点> vc3的观点
所以,当我试图调用[vc3 presentModalViewController]时,它无法正常工作.. 我不得不提出vc1并且它有效。我将vc1作为app delegate的属性引用,因此能够轻松访问。
但是,我仍然没有找到真正的原因,但我可以说这对我有用。
答案 1 :(得分:0)
所以我最终使用performSelector:withObject:afterDelay([self performSelector:@selector(showApp)withObject:nil afterDelay:0.0];),延迟为0,现在可以正常工作。我并不激动,因为这似乎是一种非常懒惰和丑陋的方式来完成任务 - 但主要是因为我仍然不明白为什么它只是通过调用[self showApp]来工作