iOS - 在 UINavigationController 中将 UIViewController 显示为全屏
Posted
技术标签:
【中文标题】iOS - 在 UINavigationController 中将 UIViewController 显示为全屏【英文标题】:iOS - Display a UIViewController as fullscreen from within a UINavigationController 【发布时间】:2015-01-02 02:05:39 【问题描述】:我需要将 UIViewController 呈现为全屏(高于所有其他视图)。此 UIViewController 当前位于 UINavigationController 中。
是否可以让 UINavigationController 以模态方式呈现它当前的*** UIViewController?
如果我使用,我想从 UIViewController 中全屏显示:
[self.navigationController presentViewController:self animated:YES completion:nil]
似乎什么都没有发生.. 这是不允许的原因吗?
编辑
我已经发布了另一个问题,其中我已经解决了每个场景的这个问题。 (其中包含代码 sn-p)
Is it possible for a UIViewController to present itself?
【问题讨论】:
你只是想隐藏导航栏吗?你可以这样做:[self.navigationController setNavigationBarHidden:YES animated:YES]; 你能再分享一些sn-p代码吗? Fraggle:如果不是因为我 在 UINavigationController 的顶部 有额外的子视图,这将起作用。因此,简单地隐藏导航栏不会导致我试图全屏显示的视图位于其他视图之上。这就是为什么我需要以模态方式呈现它。 @MichaelCueno 你不能隐藏其他视图吗?如果您可以编辑您的问题并添加更多有助于我们回答的详细信息。我即将实现类似的东西,很乐意提供帮助和分享。 这是可能的,但是这个项目很大,有很多贡献者,我认为这将是一个脆弱的设计,因为任何添加另一个视图的人也需要记住将它隐藏在这个函数中。 【参考方案1】:如果您想以模态方式呈现视图控制器,则应该从不同的视图控制器呈现它。模态演示将在导航控制器上显示呈现的视图控制器(全屏)
例如,
UIViewController *firstVC = self;
UIViewController *secondVC = <the VC you want to present>
[firstVC presentViewController:secondVC animated:YES completion:nil]
或者只是在 Interface Builder 中使用模态转场。
【讨论】:
【参考方案2】:你应该使用这个:
[self presentViewController:self.navigationController animated:YES completion:nil];
显示一个控制器。
【讨论】:
我正在尝试展示当前嵌入在 UINavigationController 中的 UIViewController,而不是 navigationController 本身。 (self指的是我需要呈现的视图控制器)【参考方案3】:假设您要模态显示的视图控制器是导航控制器顶视图控制器
[self presentViewController:self.navigationController.topviewcontroller animated:YES completion:nil];
希望对你有帮助
【讨论】:
谢谢,但我相信这会失败,因为 topViewController 实际上 is self。当我尝试此代码时,我收到错误:"Application tried to present modally an active controller"
以上是关于iOS - 在 UINavigationController 中将 UIViewController 显示为全屏的主要内容,如果未能解决你的问题,请参考以下文章
iOS 6 UINavigationController 中的奇怪错误
将第二个 UIToolbar 添加到 UITableViewController
UINavigationController poptorootviewcontroller 并选择另一个选项卡进行转换,如推送视图控制器