我因导航栏问题而将头撞到墙上。请参阅此示例项目,以更好地了解我想要实现的目标。基本上,我的应用程序结构是这样的:
NavController -root-> ViewControllerA -> button -> push -> ViewControllerB --> ViewControllerC
| |
button -> presentModally |
| |
V |
PopoverViewController |
| |
button -> push to the nav controller |
| |
| |
---------------------------------------
导航堆栈的第二个视图控制器(称为 B)上的按钮将呈现一个具有清晰背景的模态视图控制器(它的模态呈现样式overCurrentContext
看起来像一个弹出框):
然后,弹出框上的一个按钮会将一个新的视图控制器推送到导航堆栈(称为 C):
[
弹出框由 B 呈现,而不是实际的导航控制器(B 定义呈现上下文)。这样当弹出框将 C 推入堆栈时,C 不仅覆盖 B,而且还覆盖弹出框。
解散 C 时会出现问题。导航堆栈弹回 B,而弹出框仍在顶部(这是我的意图)。但是,B 现在填充了导航视图控制器的整个框架(在按下 C 之前,B 的顶部被固定到导航栏)。这会导致 B 顶部附近的视图被导航栏剪裁:
查看 UI Inspector 确认这是因为 B 的视图现在填充了导航控制器的视图:
在 C 出现之前情况并非如此。关于导致这种情况发生的任何想法?