【问题标题】:Present Modal View Controller On Top of UINavigationController在 UINavigationController 之上呈现模态视图控制器
【发布时间】:2012-07-24 09:13:12
【问题描述】:

我的应用位于 UINavigationController 下方,因此位于 UINavigationBar 下方。我想在这个 UINavigationBar 之上展示一个 Modal View Controller,因为我写的控制器如果在它下面就没有意义(也就是说,我想在显示这个视图控制器时隐藏导航栏)。

用这段代码展示它:

    ukc = [[UnlockKeyboardViewController alloc] init];
    [self presentModalViewController:ukc animated:NO];

使模态视图控制器位于 UINavigationBar 下方。当我显示此模式视图时,不应显示 UINavigationBar。我该如何解决?

PS:这是一个越狱应用,所以没有 Interface Builder。

【问题讨论】:

    标签: iphone ios uinavigationcontroller uikit modalviewcontroller


    【解决方案1】:

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

    note173 的回答也适用于animated:YES。用户将看到ukc 的视图向上滑过导航堆栈。

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

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

    第一个呼叫将关闭ukc。第二个调用关闭导航控制器。用户看到的是ukc 的视图向下滑动以显示self 的视图,并瞥见它后面的导航堆栈。

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

    (如果您的目标是在导航堆栈和ukc 之间来回切换,您将通过一次调用关闭ukc -- self.navigationController dismissModalViewControllerAnimated:YES]; 这会将ukc 的视图向下滑动以显示导航堆栈。)

    请注意,这些方法在 iOS 5 中已弃用。我假设 presentViewControllerdismissViewControllerAnimated 会做同样的事情,但我还没有测试过它们。

    【讨论】:

    • 是的,presentViewController 和dismissViewControllerAnimated 是目前使用的正确方法。
    【解决方案2】:
    [self.navigationController presentModalViewController:ukc animated:NO];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 2016-06-08
      • 1970-01-01
      • 2016-02-03
      • 2012-12-03
      • 1970-01-01
      • 2014-11-17
      相关资源
      最近更新 更多