-
20-12-2019 - |
题
我想要什么
一个完全自定义的导航栏,它将持续并允许用户通过自定义模态转换进行交互。
我做了什么
我构建了一个父视图控制器,其中包含底部的容器视图,顶部的视图(自定义导航栏)。容器视图嵌入了一个视图控制器,可以模态呈现其他视图控制器。
呈现的视图控制器,模态使用自定义转换(UIViewControllerTransitionDingDelegate)从底部弹出,并且仅占据底部的视图控制器的一部分(即,离开菜单可见)。
当第一视图控制器模块上呈现时,自定义导航菜单仍然可以与之交互。但是,如果第一个模型显示的视图控制器又呈现另一个视图控制器,则自定义导航栏不会响应用户交互。
| NAV BAR |
|-----------| |------------| |------------|
| Container | | View | | View |
| view |-> EMBED -> | Controller |-> Presents -> | Controller |-> Presents ->
| | | | Modally | 1st | Modally
.
(续)
|------------|
| View |
->| Controller |
| 2nd |
.
当第一视图控制器模块上呈现时,导航栏仍然响应触摸。当第二个(以及任何其他方式(即3号,第4页))呈现导航栏仍然可见但不响应用户触摸。
在 github 上有一个示例项目,说明了我所拥有的问题。
我的问题是什么
我希望能够点击导航栏,无论我模具呈现多少个视图控制器。
应该这样的方式接近这项工作?
完成我想做什么的最好方法是什么?是否有标准方法可以创建完全自定义导航栏(即,几个按钮,自定义高度等)?
解决方案
请更改文件cvtfirstviewcontroller中的第二个视图控制器的模态演示文稿样式。[ github 项目。
使用此代码
secondViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
.
而不是
secondViewController.modalPresentationStyle = UIModalPresentationCustom;
. 不隶属于 StackOverflow