gpt4 book ai didi

ios - 仅将 subview 添加到当前 View 的 UINavigationBar

转载 作者:IT王子 更新时间:2023-10-29 05:50:42 25 4
gpt4 key购买 nike

我想要做的是向我的 UINavigationController 的 UINavigationBar 添加一个自定义 View ,但仅限于当前可见的 View Controller 。

所以我构建了我想在容器 View 中添加的 View 的 subview ,并通过获取引用将此 View 添加到导航栏:

let navBar = navigationController?.navigationBar as UINavigationBar!

结果是这样的:

enter image description here

但是,当我在 UINavigationController 堆栈中推送另一个 View Controller 时,此 subview 也会保留在推送的 viewController 的 UINavigationBar 中:

enter image description here

仅在我当前 View 的 UINavigationBar 中添加此 subview 并且不让它也持久存在于连续的 View Controller 中的最佳方法是什么?

最佳答案

发生这种情况有几个原因:

  1. UINavigationBar 添加 subview 并非完全不受支持,但可能会导致奇怪的行为。

  2. UINavigationController 中的所有 View Controller 共享相同的 UINavigationBar(这就是为什么新推送的 View Controller 对您的 subview 没有任何影响)。

如果你想正确地做到这一点,这里有两种可能的解决方案:

  1. 当您的理想 View Controller 可见时,使用 viewWillAppearviewWillDisappear 添加/显示和移除/隐藏您的 subview 。

  2. 使用 UINavigationItemtitleView 属性来分配这个 View ,例如:

    // Example code in Obj-C, sorry!
    myViewController.navigationItem.titleView = [[MySearchView alloc] init];

    这样搜索 View 对于该 View Controller 将是唯一的。

关于ios - 仅将 subview 添加到当前 View 的 UINavigationBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28550241/

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