在UINavigationController之上呈现模态视图控制器

4
我有一个应用程序,它位于UINavigationController之下,因此也在UINavigationBar之下。我想在这个UINavigationBar的顶部显示一个模态视图控制器,因为我编写的控制器如果位于其下面就没有意义(也就是说,我想在显示此视图控制器时隐藏导航栏)。
使用以下代码进行演示:
    ukc = [[UnlockKeyboardViewController alloc] init];
    [self presentModalViewController:ukc animated:NO];

导致模态视图控制器位于UINavigationBar之下。当我显示这个模态视图时,UINavigationBar不应出现。我该如何解决这个问题?
PS:这是一个越狱应用程序,所以没有界面构建器。
2个回答

9
[self.navigationController presentModalViewController:ukc animated:NO];

0

在处理相关问题时的额外信息:

note173的答案也适用于animated:YES。用户将看到ukc的视图从导航栈中滑出。

如果随后需要关闭ukc并返回到self的视图,请执行以下操作:

        [self.navigationController dismissModalViewControllerAnimated:NO];
        [self.navigationController dismissModalViewControllerAnimated:YES]; 

第一次调用dismisses ukc。第二次调用dismisses导航控制器。用户看到的是ukc的视图向下滑动以显示self的视图,并瞥见其后面的导航堆栈。

因此,您在这里拥有一种直接从导航堆栈切换到其他常规视图控制器,然后再返回到基本视图控制器的方法,所有这些都具有按顺序合理的动画效果。

(如果您的目的是在导航堆栈和ukc之间来回切换,则可以使用一个调用dismiss ukc -- self.navigationController dismissModalViewControllerAnimated:YES];,它会将ukc的视图向下滑动以显示导航堆栈。)

请注意,这些方法在iOS 5中已被弃用。我假设presentViewControllerdismissViewControllerAnimated会执行相同的操作,但我还没有测试过。


是的,presentViewController和dismissViewControllerAnimated目前是正确的方法。 - lekksi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接