我试图从视图控制器B呈现模态视图控制器C.B的视图不覆盖整个屏幕,并且是另一个视图控制器的子视图,A。当我尝试呈现全屏模式时我看到了什么是模态覆盖整个屏幕,但当我点击屏幕中的某些位置时,控件将“传递”到A的视图。
我可以通过某种授权从A中呈现模态来绕过这一点,但我不知道为什么会发生这种情况!毕竟,如果你有一个标签栏控制器来管理你的一个视图,并且你试图呈现一个模态视图,它就可以完全覆盖整个屏幕。幕后是否有一些魔力?
答案 0 :(得分:10)
我认为没有关于如何实现模式的官方文档,但任何视图都可以获取UIWindow的UIApplication并在rootViewController属性上调用-presentModal ....这将使你的模态全屏幕的影响。我确信还有其他方法可以达到同样的效果。
[[[[UIApplication sharedApplication] keyWindow] rootViewController] presentModalViewController:myModalVC animated:YES];
在这种情况下,您需要使用addSubview:和bringSubviewToFront:为所有视图控制器实现自己的“模态”方法。我在一个较大的项目中完成了这项工作,我希望从模态视图中获得一些不同的行为。
答案 1 :(得分:2)
这对我有用:
UIViewController* vc = [[[UIViewController alloc] init] autorelease];
UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView* topView = [[keyWindow subviews] objectAtIndex:[[keyWindow subviews] count] - 1];
vc.view = topView;
[vc presentModelViewController...
基本上,您创建一个新的UIViewController并将其附加到主窗口的最顶层视图(这是用户当前看到的视图)。
答案 2 :(得分:1)
简单但不确定接受度和效率。这就是我使用的。
希望这会有所帮助......