在不覆盖全屏的 UIViewController 中模态显示 UIViewController

Posted

技术标签:

【中文标题】在不覆盖全屏的 UIViewController 中模态显示 UIViewController【英文标题】:Present UIViewController modally within a UIViewController that does not cover full screen 【发布时间】:2012-04-11 18:12:58 【问题描述】:

基本上,一旦我关闭模式视图,我的自定义 UIToolbar 就不再可点击。

这是我的设计:

屏幕底部的自定义 UIToolbar

屏幕顶部与容器视图控制器相关联 [注意] 我将上面的前两项添加到一个根视图控制器中,并分配给 UIWinow 的根视图控制器。每当单击工具栏项时,都可以更改容器视图。

然后,每个工具栏项都与一个 UINavigationController 关联,以便它可以导航。

在导航的 UIViewController 中,我以模态方式呈现视图。由于整个设计,模态视图不会覆盖全屏...

关闭模式视图后,UIToolbar 项目不再可点击。

我认为“错误”存在于我呈现模态视图的位置,所以我也尝试使用根视图控制器呈现模态视图,然后还有其他问题......

也许有人对此有更深入的了解,那将不胜感激:)

谢谢。

【问题讨论】:

【参考方案1】:

在不再需要 modalViewController 时尝试释放它。如果您使用 ARC,请将其设置为 nil。当需要 modalView 时分配一个新的。

【讨论】:

非常感谢。我正在模态控制器实现的方法中进行解除调用;当单击模态视图上的按钮时调用该方法。如果不使用委托从父级调用,我无法将 modalViewController 设置为 nil。 我终于修好了。在关闭模态视图控制器时,从 AppDelegate 获取根控制器,然后获取导航控制器并显示导航栏,因为它是隐藏的。 @nanshi 酷。太棒了:)

以上是关于在不覆盖全屏的 UIViewController 中模态显示 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章

创建不占用全屏的 UIViewController 时,如何通过在外部点击来关闭它?

非全屏和全屏 UIViewController 之间的漂亮幻灯片过渡

iOS 11 实现App在禁止转屏的状态下网页播放器全屏

PresentViewController 一个带有 UINavigationController 的非全屏 UIViewController

UIViewController 被另一个全屏视图控制器覆盖,但没有从层次结构中删除

在没有全屏的情况下在 UIWebView 中播放 Youtube 视频