加载根视图的AppDelegate回调

时间:2016-11-01 14:10:26

标签: ios swift

我的应用包含一个更新屏幕,可从我们的API中获取新数据。目前,这是从菜单中的幻灯片手动调用的。

我想在app load上添加“检测到更新”功能。因此,当应用加载时,它会检查新数据,如果有新数据,则会将更新屏幕显示为popover。我还想在第一个应用程序加载时显示更新屏幕(因为我们发布没有数据的应用程序 - 所以它需要在使用之前运行至少一个更新)

该应用程序非常简单,root view controller目前是navcontroller,其中有3个或4个VC系列(几乎整个应用程序除了打开几个信息页面的侧边菜单外)和更新屏幕)。

我想我需要做的是在AppDelegate中运行“更新检查”,如果它返回true,则显示弹出窗口。但是我收到了这个错误:

  

2016-11-01 13:02:28.507 XXX [38895:1026306]警告:尝试出席    上     谁的观点不在   窗口层次结构!

我猜是因为root controller尚未加载并显示。

什么是解决这个问题的最好办法。我有几个想法,但不确定是否有好处,或者即使它们会起作用!

  1. 尝试找一些“root view controller is loaded”回调 在app delegate中使用

  2. 将更新检查放入我的初始视图控制器(但这不是它所属的位置,我应该能够更改初始视图控制器,而不会影响更新检查,因为它们是单独的东西)

  3. 某种“路由器视图”作为我的初始视图控制器,我可以将逻辑放入检查。但是我不希望这个屏幕占用应用程序(即我不希望有一个微调器让用户等待更新检查 - 我希望他们直接使用应用程序,如果需要更新弹出显示)< / p>

  4. 对此有何建议?

2 个答案:

答案 0 :(得分:0)

尝试在窗口上推送该加载指示器而不是根视图控制器。或选择第一个VC并将其放在上面。

答案 1 :(得分:0)

也许你应该创建新的UIViewController(CheckForUpdateViewController) 并将该视图控制器设置为根视图控制器。然后,您可以在CheckForUpdateViewController.m中添加该检查,而不是在AppDelegate中检查更新。在那里,您可以根据需要显示弹出框,或者如果没有可用更新,则打开导航视图控制器。