gpt4 book ai didi

ios - 使用自定义导航栏在导航堆栈中的 Controller 之间进行转换

转载 作者:行者123 更新时间:2023-11-28 05:30:04 24 4
gpt4 key购买 nike

我有三个 Controller ,每个 Controller 在导航栏上都有不同的样式

Controller A:白色导航栏,透明状态栏(让内容可见),通过navbar自定义bg图片实现

enter image description here

Controller B:白色导航栏,白色状态栏,通过navbar自定义bg图片实现

enter image description here

Controller C: 隐藏导航栏,只有带按钮的自定义透明 View

enter image description here

标准用例是 A > B > C 并返回

问题是只有一个导航栏对象,当我更新它的可见性或背景图像时,它适用于所有 View Controller 。因此,当我从 A 转到 B 时,状态栏在过渡期间变为白色。当我从 B 转到 C 时,导航栏消失,即使 B 仍然可见(或者在它消失之后,这取决于我是在 viewWillAppear 还是 viewDidAppear 中更改导航栏)。

我的目标是为所有 Controller 提供“单独的”导航栏样式,这样它就不会在转换期间发生变化,但是新 Controller 会滑入它自己的导航栏,而旧 Controller 会在其导航栏样式保持不变的情况下消失。

如果不使用我自己的 UINavigationController 实现,这样的事情甚至可能吗?

最佳答案

是的,这是可能的。 UINavigationController 具有 navigationBarHidden 属性。将其设置为 true 以隐藏包含 Controller A、B 和 C 的导航 Controller 。

然后向每个 subview Controller (A、B 和 C)添加一个导航栏或按钮,以使用 View Controller 推送/弹出。

当点击 B 和 C 的后退按钮时,您可能需要调用 popViewControllerAnimated

结构:

UINavigationController (with navigationBarHidden set to true)
|
+- UIViewController A
| |
| + UINavigationBar
|
+- UIViewController B
| |
| + UINavigationBar
|
+- UIViewController C
|
+ UIButton

关于ios - 使用自定义导航栏在导航堆栈中的 Controller 之间进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29117752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com