Ios 是否在didFinishLaunchingWithOptions完成之前显示UIAlertView?

Ios 是否在didFinishLaunchingWithOptions完成之前显示UIAlertView?,ios,cocoa-touch,uialertview,Ios,Cocoa Touch,Uialertview,我的应用程序在didfishlaunchwithoptions中执行耗时的一次性初始化。我想显示一个警报,UIAlertView,以通知用户此情况,但在完成使用选项启动之前,警报不会显示,即使使用[警报性能选择器:@selector(show)with object:nil afterDelay:0.0]显示 无法将一次性初始化移动到post-didFinishLaunchingWithOptions,因为didFinishLaunchingWithOptions必须设置主窗口的根视图控制器,该

我的应用程序在didfishlaunchwithoptions中执行耗时的一次性初始化。我想显示一个警报,UIAlertView,以通知用户此情况,但在完成使用选项启动之前,警报不会显示,即使使用
[警报性能选择器:@selector(show)with object:nil afterDelay:0.0]显示

无法将一次性初始化移动到post-didFinishLaunchingWithOptions,因为didFinishLaunchingWithOptions必须设置主窗口的根视图控制器,该控制器需要初始化。在didFinishLaunchingWithOptions中设置一次性(虚拟)根视图控制器(稍后讨论或替换),似乎有点。。。不雅的


想法?

我以前在一个特定的应用程序中遇到过这个问题

解决此问题的唯一方法是使用“虚拟”根视图控制器

我所做的是制作一个带有
UIImageView
的视图控制器,添加
UIImageView
启动图像和活动指示器

请注意,活动指示器不必是
UIActivityIndicatorView
;活动指标只是一个概念

在我的例子中,我有一个标签和一个进度条。我会在加载过程中更新进度条,并更改标签文本以指示用户应用程序正在做什么


此外,我建议您不要使用警报视图;这是一个有创意的想法,但在
使用选项完成启动后不久,您可能会收到
应用程序的IDBECOMEACTIVE
,也可能不会收到,不幸的是,在
使用对象:nil afterDelay:0.0的[self-performsSelector:@selector(使用选项完成启动后的DIDEFINISHLAunchingwithOptions\u stage2)]
之前,这使得与预期应用程序状态相关的控制流复杂化。哦,天哪…@Gary-这有点像第二十二条军规。我们需要UI来显示我们正在进行初始化UI的提取。rtiago42的想法不仅是个好主意,也是唯一的出路。我也不认为这不雅。应用程序应始终向用户显示其状态,包括“我还不知道我的状态”状态。@danh-iOS确实应区分基于帧的UI(启动映像)和无帧UI(启动映像顶部的UIAlertView),与大多数其他UI工具包一样:)。@rtiago42-只有在
完成了使用选项启动以及
applicationIDbecomeactive
(完全位于前台的应用程序)后,
UIAlertView
才会由iOS显示。应用程序初始化的第二阶段(主窗口根视图控制器的更换)可以在
applicationIDBECOMEACTIVE
中安排,以获得可预测的通知顺序。@Gary不要忘记,可以调用
applicationIDBECOMEACTIVE
,而无需调用
didfishlaunchingwithoptions:
;该应用程序可能来自后台。就我个人而言,每当我觉得需要“启动屏幕”时,我都会让视图控制器负责设置新的根视图控制器。您可以将SplashScreenController设置为应用程序的代理,这样做将使代理负责窗口的管理。