Iphone 全屏放映”;“模态”;加载视图

Iphone 全屏放映”;“模态”;加载视图,iphone,ios,ipad,uikit,Iphone,Ios,Ipad,Uikit,我的应用程序的视图层次结构有一个根UINavigationController,其中有一个UIViewController子类,其中包含一个UIWebView。一旦应用程序启动,我希望使用全屏加载视图控制器隐藏整个导航控制器视图,直到调用web view finish loading delegate方法 为了实现这一点,我考虑了两种方法中的一种,这两种方法都不是“感觉正确”: 在UINavigationController视图中添加一个子视图-这让人觉得干预导航控制器的视图很不方便 从根级别

我的应用程序的视图层次结构有一个根
UINavigationController
,其中有一个
UIViewController
子类,其中包含一个
UIWebView
。一旦应用程序启动,我希望使用全屏加载视图控制器隐藏整个导航控制器视图,直到调用web view finish loading delegate方法

为了实现这一点,我考虑了两种方法中的一种,这两种方法都不是“感觉正确”:

  • UINavigationController
    视图中添加一个子视图-这让人觉得干预导航控制器的视图很不方便
  • 从根级别显示一个模态视图控制器-我必须等到
    viewdide出现
    后才能调用它,这会导致在显示前较低VC出现一个难看的闪烁。反过来,在某些情况下,加载VC会显示它自己的模态,这意味着我会在根VC上的模态上有一个模态

我是完全疯了,还是这不是一个实现这个应用程序流的特别容易的方法?

你有必要用UIWebView完全隐藏背景中发生的事情吗?阻塞活动指示器不足以实现这种用户体验吗?如果是这样的话,我建议使用在线提供的许多不错的活动指示组件中的一个,例如有点“优雅”的方法:创建一个包含需要加载的UIWebView的共享单例类,并在启动应用程序时启动请求。同时,显示预加载程序屏幕(应用程序启动时添加到导航堆栈的第一件事)。一旦请求完成加载,通过NSNotification center发布通知,使AppDelegate推/切换到加载的UIWebView控制器。

老实说,我同意您的意见-但我正在尝试实现一个客户端的设计,该设计要求全屏显示图形(基本上是一个UIViewController,它复制Default.png的外观,以便在安装过程中进行优雅的转换)。客户端将是我们的终点…确保他知道“优雅”无法通过这种方式实现:)您可以向[UIApplication sharedApplication].keyWindow添加子视图-确保在按下视图控制器之前执行此操作(因为这会妨碍导航动画,这可能看起来很难看,但您可以将其添加为子视图,然后设置其位置/alpha的动画,使其看起来更好一些)。请确保保存对它的引用,以便在web视图加载完毕后可以将其删除。Pooky,这是自阅读您上次的评论以来我的想法发生变化的地方!我一直担心的是,有多个视图控制器在起作用-尽管如果加载VC有意阻止另一个视图控制器的可见性,这是现实的吗有一个问题吗?我对整个(iOS5之前的容器)的理解是,每个“屏幕”有1个ViewController。除此之外,响应程序堆栈会变得非常混乱,不知道向哪个VC报告事件。也就是说,如果我创建了真正的根窗口。rootViewController,还有什么我坚持的吗(暂时)在UIWindow的子视图中,可以愉快地出现,做它该做的事情,然后再去,而不会在其他地方引起问题?正如我所怀疑的,加载的VC没有响应旋转事件等。因此它看起来很奇怪。这是“共享”最优雅的解决方案在UIViewController之间切换web视图,并在适当的时间调出窗口的rootViewController。