对于我的应用程序,我希望应用程序在进入主页面之前为加载进度设置动画(加载本地CoreData,并与游戏中心同步)。
所以我在ViewDidLoad()中创建了一个LoadingView作为我的rootview,在本地加载和游戏中心加载完成后,我再推送到主视图。
我很确定这是错误的做法,因为我收到了这个警告: 不鼓励在分离的视图控制器上显示视图控制器
你能让我知道什么是一个好习惯吗?
答案 0 :(得分:0)
我会使用NSNotificationCenter
来创建一个在加载完成时听到事件的观察者:
您可以将观察者置于ViewDidLoad中,以便删除在CoreData加载开始时实例化的UIView
。您很可能需要自己构建一个微调器视图。我通常使用QuartzCore来做到这一点,并确保它与我的应用程序的其余部分匹配。
由于您的核心能力在您的帖子中不明确,这里有一篇NSHipster文章,讨论了这个概念的用法:http://nshipster.com/nsnotification-and-nsnotificationcenter/
答案 1 :(得分:0)
将第二个视图控制器设置为根视图控制器。所以你不会得到任何警告等。
[UIApplication sharedApplication]delegate] window].rootviewController=secondViewCont;
唯一的问题是不会有任何页面导航动画。您可以通过委托或通知您的加载过程进行观察。
答案 2 :(得分:0)
我建议您创建一个初始根视图,它非常简单,具有背景并使用HUD显示您的进度。我用这个:
https://github.com/jdg/MBProgressHUD
初始化所有内容后,删除HUD并将根视图控制器替换为使用故事板加载的新视图控制器。我建议你为app delegate添加一个方法,你可以调用它来为你切换。
然后关闭并运行新根。要更改根,请在应用委托实例中使用以下内容。
self.newController = <load with storyboard>;
self.window.rootViewController = self.newController;
[self.window makeKeyAndVisible];