我想要什么

一个完全自定义的导航栏,它将持续并允许用户通过自定义模态转换进行交互。

我做了什么

我构建了一个父视图控制器,其中包含底部的容器视图,顶部的视图(自定义导航栏)。容器视图嵌入了一个视图控制器,可以模态呈现其他视图控制器。

呈现的视图控制器,模态使用自定义转换(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;
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top