Iphone UIViewController以模式显示时显示在当前视图后面

Iphone UIViewController以模式显示时显示在当前视图后面,iphone,ios5,ios4,Iphone,Ios5,Ios4,在iOS 5上,当我尝试使用presentModalViewController从另一个视图控制器显示任何视图控制器时,模式视图显示在当前视图的后面 由于它在iOS 4上运行良好,并且知道presentModalViewController在iOS 5中已被弃用,因此我尝试使用presentViewController,但运气不佳 这是我第一次遇到这个问题,有什么想法可以导致这种奇怪的行为吗?我认为问题在于你没有设置一个合适的模式演示风格。 此示例应在现有视图控制器上触发全屏模式 [self

在iOS 5上,当我尝试使用presentModalViewController从另一个视图控制器显示任何视图控制器时,模式视图显示在当前视图的后面

由于它在iOS 4上运行良好,并且知道presentModalViewController在iOS 5中已被弃用,因此我尝试使用presentViewController,但运气不佳


这是我第一次遇到这个问题,有什么想法可以导致这种奇怪的行为吗?

我认为问题在于你没有设置一个合适的模式演示风格。

此示例应在现有视图控制器上触发全屏模式

 [self setModalPresentationStyle:UIModalPresentationFullScreen];
 ViewController2 *vc = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
 [self presentViewController:vc animated:YES completion:NULL];

不确定是否正在使用按钮显示视图控制器,但如果正在使用,则应该可以使用该按钮。在视图控制器中创建一个新函数,如下所示。这将实例化视图和视图中的导航控制器,以便以后可以将其取消

- (void)buttonPressed {
    UIViewController *yourViewController = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    UINavigationController *navigationController = [[UINavigationController] alloc] initWithRootViewController:yourViewController];
    [self presentModalViewController:navigationController animated:YES];
   }
然后在viewDidLoad中,如果您通过按钮显示它,您将得到类似的内容。下面的代码用于UIBarButtonItem,但其他按钮应以类似的方式工作。只需确保将操作参数设置为@selectorbuttonPressed,或在按下按钮时调用的函数的任何名称

 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] init]                                                                                  
target:self                                                                         
action:@selector(buttonPressed)];

我终于找到了问题所在。由于一些尴尬的原因,根窗口的rootViewController设置不正确,导致模态视图出现奇怪的行为


更令人费解的是,到目前为止,它在iOS 4上运行良好,但在iOS 5上却失败了。我相信我仍然没有找到导致此类问题的真正原因,但在AppDelegate中正确设置rootViewController解决了问题。

也许您在UIWindow中有一些视图?@AliaksandrAndrashuk我不确定我是否理解了您的意思……不幸的是,这不起作用,视图仍然显示在其他任何内容后面。不过还是要谢谢你!你想用什么方法触发你的模态?我在测试中注意到的一件事是,如果我试图在viewDidLoad中调用模态,我就看不到它,但是如果我在ViewDidAspect方法中调用模态,我就可以看到它。在调用ViewDidAspect很久之后,当用户按下as按钮时,就会触发模态。我已经成功地完成了数千次,但今天我错过了一些东西。这就是让我困惑的地方。我实际上有相同的代码,来自UINavigationController实例化的appart。可悲的是,添加它没有任何效果。另外,在某些情况下,我提供了一个UIImagePickerController,它不需要navigationController。使用UIImagePickerController让我相信控制器出现在当前视图的后面,因为在本例中,状态栏消失了,被摄像头视图覆盖。我认为这也是我的问题此代码[[[UIApplication sharedApplication]keyWindow]rootViewController]presentViewController:self.imagePicker动画:是完成:无];正在发出错误:警告:尝试显示其视图不在窗口层次结构中的对象!。你是如何正确设置的?事实上,我完全重写了这部分代码。我不知道自己到底出了什么问题,我是如何解决的。。。对不起,我帮不了什么忙。为了子孙后代,以下是我如何解决这个问题的。在页面上搜索hack以查看实现。