在选择 UISearchDisplayController 后保持 UINavigationController 的导航栏隐藏

2023-12-19

我有一个UISearchDisplayController设置与UITableViewController它嵌套在一个UINavigationController。当选择一个单元格时,UITableView's didSelectRowAtIndexPath方法被触发,它将新视图推送到父导航控制器。这个新视图应该在入口处隐藏导航栏。

[[self navigationController] setNavigationBarHidden:YES animated:NO];

我在中使用这条线didSelectRowAtIndexPath隐藏导航栏的方法。当不使用搜索控制器选择一行时,此功能可以正常工作,但在选择搜索结果时会被覆盖。看来UISearchDisplayController在选择行后的某个时间将其置于右侧取消隐藏导航栏。

如果我移动setNavigationBarHidden调用目标视图的viewWillAppear方法、结果相似。我可以通过将 hide 调用放入来使其工作viewDidAppear,但这使得very尴尬的过渡效果让人感觉跳跃和不合适。我想在新视图滑到屏幕上之前使导航栏已经隐藏。

有谁知道导航栏的取消隐藏发生在哪里,和/或我可以通过什么方式覆盖此行为?


这可能不是最优雅的解决方案,但我相信它完全符合您的要求。我遇到了类似的问题,我的解决方案是有一个隐藏导航栏的方法,在延迟 0 秒后调用该方法,如下所示。

调用的方法是:

-(void) hideNavBar {
    if (self.navigationController.navigationBar.hidden == NO)
    {
        [self.navigationController setNavigationBarHidden:YES animated:YES];
    }
}

然后在 viewDidLoad 方法中,我有以下内容:

[self performSelector:@selector(hideNavBar) withObject:nil afterDelay:0.0];

此操作可以立即完成并删除导航栏。如果您想要动画或在延迟后将其删除,您可以修改延迟时间。我尝试了 [self hideNavBar] 但这根本不起作用,所以坚持我上面的内容。

希望这有帮助,如果有人有更优雅的解决方案,我很感兴趣!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在选择 UISearchDisplayController 后保持 UINavigationController 的导航栏隐藏 的相关文章

随机推荐

  • 如何锁定 cytoscape.js 节点在其父节点内的位置

    我想锁定节点相对于其父复合节点的位置 这样 如果我抓取并拖动父节点 子节点会随之移动 但子节点不能单独抓取 如果我将子项设置为不可抓取和 或锁定 那么它不会与其父项一起移动 但如果我不这样做 它可以被单独拖动 这是我不想要的 这可以做到吗
  • 如何将参数(名称)传递给函数工厂?

    我需要构建许多带有许多不同参数的函数 尽管它们共享许多代码和结构 为了避免重复 我想我应该聪明地为自己构建一个函数工厂 又名闭包 我不知道如何在函数工厂内传递函数参数 我的用例是一堆 S3 构造函数 所有这些函数都共享相同的验证机制 所以我
  • 如何将测试用例从 Excel 导入到 VSTS/Azure DevOps

    我有很多测试用例当前位于 Excel 中 我需要将它们迁移到 VSTS Azure DevOps 有人可以推荐我一个好方法吗 这是一种手动方式 但也许对您有用 在 IE 或 Edge 上 您可以在测试计划中尝试网格视图 然后复制 粘贴测试用
  • Java LibGDX 如何解析 JSON?

    我有一个 json 文件 内容如下 players name hp 100 name hp 120 weapons name Desert Eagle price 100 name AK 47 price 150 如何将其解析为武器数组 我
  • 获取和转换与条件格式

    我正在尝试使用conditional formatting的输出Get Transform询问 Office 365 Excel 2016 32 位 Windows 10 专业版 64 位 但是 当刷新查询时 条件格式不仅仅是扩展 收缩以影
  • 如何将 pandas DataFrame 表保存为 png

    我构建了一个结果的 pandas 数据框 该数据框充当表格 有 MultiIndexed 列 每行代表一个名称 即index name1 name2 创建 DataFrame 时 我想显示这个表格并将其保存为 png 或任何图形格式 目前
  • Angular ui grid双击事件设置

    所以我试图让我的 Angular UI 网格在整行上注册双击事件以打开模式 我可以从烤面包开始 然后从那里开始 这是我根据在线各种演示和示例得出的最接近的结果 但我似乎无法让它发挥作用 控制器 scope gridHandlers onDb
  • 为什么我不能在 Java 中声明同一个变量两次?

    这里有类似的问题 但他们并没有真正回答我的问题 所以我很好奇为什么我们不能在Java中声明同一个变量两次 例如 int a 4 int a 6 这在 Java 中实际上行不通 然而在 javascript 中 这实际上是有效的 var a
  • Angular 1 材料设计在 Firefox 中关闭对话框后滚动到顶部

    您好 当我在 Firefox 中使用 Angular 材质打开对话框窗口时 对话框关闭后页面滚动到顶部 任何人都可以解释为什么会发生这种情况或有解决方法 See https codepen io WitteStier full EmzKQb
  • 在 pyo 和 python 中播放声音

    我正在尝试pyo https github com belangeo pyo对于蟒蛇 我使用主页中的以下命令安装了 ubuntu 的 pyo sudo apt get install libjack jackd2 dev libportmi
  • 如何在caffe中将多个N维数组输入到网络中?

    我想在 caffe 中创建一个用于语义分割的自定义损失层 需要多个输入 我希望这个损失函数有一个额外的输入因子 以惩罚小物体的漏检 为此 我创建了一个图像 GT 其中每个像素都包含一个权重 如果像素属于小物体 则权重较高 我是 caffe
  • 使用 phpmyadmin 导入 CSV utf8

    我正在尝试导入包含韩语字符的数据集 并使用 CSV LOAD DATA 保存为 unicode 编码 即使当我将输入字符集设置为 utf8 时 韩语也会被损坏 该列的编码当然是 utf8 示例记录 制表符分隔 79 read NULL MY
  • 通过 Web 代理获取 Azure 访问令牌

    我们正在使用Microsoft IdentityModel Clients ActiveDirectory用于从 Azure AD 获取访问令牌的 API 我们要求 API 调用必须通过 Web 代理 我们找不到任何相关的示例代码 有没有什
  • getSupportActionBar().setCustomView(view) 未填充整个操作栏

    我正在尝试设置我的应用程序的自定义视图 但我所做的布局没有填充整个操作栏 我尝试了很多样式设置 但没有一个对我有用 这是我在活动中的代码 View view getLayoutInflater inflate R layout action
  • 为什么 MongoDB 节点驱动程序会生成实例池损坏错误?

    当我运行以下代码时 我收到错误消息 MongoError 服务器实例池被破坏 知道为什么或如何解决这个问题吗 var csv require importer js var MongoClient require mongodb Mongo
  • 不会使迭代器(和指针)失效的容器

    我目前正在寻找提供一些插入 insert 或push back 和一些删除 erase pop back 不够 方法的容器 并且在调用这两个方法时不会使迭代器或指针无效 更清楚地说 我想要一组元素 我可以在其中添加元素 我不关心在哪里 以及
  • Facebook 页面选项卡 iframe 应用程序无法正常工作

    因此 我遵循了所有其他问题中的说明 我这样做了 现在 当我单击页面选项卡链接 从管理员登录或非管理员登录 时 我只是得到一个空白页面 它按预期访问 facebook com mypage app my id 但什么也不做 所有链接 http
  • python mallet LDA FileNotFoundError:[Errno 2]没有这样的文件或目录:'C:\\ Users \\ abc \\ AppData \\ Local \\ Temp \\ d33563_state.mallet.gz

    这是我第一次使用mallet LDA 基本上 我下载了 mallet 2 0 8 zip 文件和 JDK 我安装了 JDK 将 mallet 2 0 8 提取到目标文件夹 我设置了 MALLET HOME 这是我的代码 mallet pat
  • 无法访问 .NET Core 中 Async 方法中 DbContext 的已处置对象

    我的一个微服务 Web api 遇到了一个奇怪的问题 我的异步 GET 方法抛出一个无法访问已处置的对象我的 DbContext 发生异常 除了第一次调用它们时 我尝试在网上寻找答案 但没有任何效果 我确保我的方法不是 async void
  • 在选择 UISearchDisplayController 后保持 UINavigationController 的导航栏隐藏

    我有一个UISearchDisplayController设置与UITableViewController它嵌套在一个UINavigationController 当选择一个单元格时 UITableView s didSelectRowAt