UISearchDisplayController隐藏导航栏

2023-12-13

我看到一个奇怪的情况。我在导航栏中放置了一个搜索栏,并将 UISearchDisplayController 与搜索栏链接起来。现在,当用户单击搜索栏时,搜索显示控制器倾向于隐藏导航栏(因此也隐藏搜索栏)。为了解决这个问题,我对 UISearchDisplayController 进行了子类化并实现了以下代码:-

- (void)setActive:(BOOL)visible animated:(BOOL)animated
{
  [super setActive: visible animated: animated];
  [self.searchContentsController.navigationController setNavigationBarHidden: NO animated: NO];
}

现在,这解决了原来的问题。我能够搜索并导航到其他控制器。

但是,假设我在视图控制器 A 上进行搜索,然后单击搜索结果,然后将视图控制器 B 推送到导航堆栈上。现在,如果我弹出视图控制器 B 并返回到 A,那么我的导航栏就会消失。看起来搜索显示控制器处于活动状态,因此它隐藏了导航栏。

如果我使搜索显示控制器处于非活动状态,然后按下视图控制器 B,然后弹出它,则会出现导航栏。

那么,有什么方法可以让我的搜索显示控制器保持活动状态,并且当我从导航堆栈中弹出视图控制器 B 时导航栏不会消失?

我的目标是iOS6

(这是一个很长的代码,所以不确定我应该在这里发布什么)。


好吧,以防万一,如果有人遇到这种情况。我针对上述情况实施了变通办法。

问题是,当我从导航堆栈中弹出视图控制器 B 时,searchDisplayController 在视图控制器 A 中仍然处于活动状态。现在,searchDisplayController 假定搜索栏应始终位于导航栏下方(据我所知)。因此,当视图控制器A再次显示时,它没有显示导航栏。为了解决这个问题,我在视图控制器 A 的 viewWillLayoutSubviews 函数中编写了以下代码。

-(void)viewWillLayoutSubviews
{
    if(self.searchDisplayController.isActive)
    {
        [UIView animateWithDuration:0.001 delay:0.0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
            [self.navigationController setNavigationBarHidden:NO animated:NO];
        }completion:nil];
    }
    [super viewWillLayoutSubviews];   
}

上面提供了一个动画,以便当用户弹出视图控制器 B 时,视图控制器 A 显示其搜索栏已激活(如果用户在进入视图控制器 B 之前曾尝试搜索任何内容)。这不是一个非常平滑的过渡,但它有效:) ....

注意:- 不要在中使用上述代码viewDidLoad or viewDidAppear函数,因为它可能会提供不需要的动画。

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

UISearchDisplayController隐藏导航栏 的相关文章

  • 应用程序在第二次运行 nsnull 计数的循环时崩溃

    我有一个循环 第一次运行正常 但第二次循环时我得到 NSNull count unrecognized selector sent to instance 0x3a094a70 Terminating app due to uncaught
  • 检测您何时进入/退出 Xamarin.iOS 中的主线程

    Xamarin MonoTouch 有没有办法检测主线程中是否正在调用代码 我正在寻找类似于Java的东西EventQueue isEventDispatchThread 我发现 Swing 编程很方便assert时不时 或有时assert
  • cordova-plugin-whitelist 适用于 Android,但不适用于 iOS (Phonegap Build)

    我正在开发一个用 Cordova 封装并使用 Phonegap Build 构建的 JavaScript 应用程序 我们包括cordova plugin whitelist来自我们构建中的 npm 并添加了
  • Swift 中的弹出视图

    我有一个弹出视图 没有选项卡栏 它弹出到带有选项卡栏的视图控制器 在带有选项卡栏的视图控制器中 我设置了一个单击按钮 以便弹出视图控制器 IBAction func PopUpClicked sender UIButton gt Void
  • 为什么我们在 @synchronized 块中传递 self ?

    我猜 synchronized 块不依赖于对象 而是依赖于线程 对吗 既然如此 我们为什么要传递 self 呢 synchronized是语言提供的用于创建同步作用域的构造 因为使用简单的全局共享互斥锁效率非常低 因此序列化每个单独的互斥锁
  • 自动调整大小完成后如何获取帧大小

    我想知道 如何以及何时 viewDidLoad viewWillAppear viewDidAppear 可以获得自动调整大小以适合其父视图的 UIViews 框架大小 从你的问题中不清楚你为什么想要它 但我想这是为了布局你的子视图 幸运的
  • 在界面生成器/故事板中设置 UIButton 图像

    我有一个视图控制器 我在故事板中添加了一个圆形矩形按钮 该应用程序运行良好 我还使用故事板将按钮连接到 segue 我正在尝试为此按钮设置一个自定义图像以用于其开和关状态 我如何访问此按钮并设置其属性 在本例中为开和关图像 这是一个屏幕截图
  • Firebase 连接管理器应仅返回一个结果

    我正在关注位于以下位置的文档 https www firebase com docs ios guide offline capability html section connection state https www firebase
  • 使用隐藏的 SFSafariViewController 获取 Safari cookie

    我正在阅读以下关于从移动网页到本机 iOS 9 应用程序对用户进行身份验证的文章 并且想知道如何最好地实现类似于下面讨论的隐藏控制器的隐藏 safari 视图控制器 https library launchkit io how ios 9
  • iOS:从非图像数据生成图像(Godus,如风景)

    所以看到图像后Godus http www kickstarter com projects 22cans project godus我想知道如何生成简单的 非交互式的 2D 图像 with 不同高度或层数的颜色不同就像下面的图片一样 我只
  • 尝试从独立的 Apple Watch 应用发出网络请求

    当应用程序是独立应用程序时 Apple Watch 是否无法进行网络通话 即使手表已连接到 iPhone 我正在使用新的独立应用程序目标 它没有附带可以发出 WatchConnectivity 请求的配对 iOS 应用程序 我十有八九收到
  • 如何从 NSString 中删除十六进制字符

    我面临一个与字符串中的某些十六进制值相关的问题 我需要从字符串中删除十六进制字符 The problem is when i print object it prints as BLANK line And in debug mode it
  • 从 RemoteIO 保存音频的示例?

    我进行了搜索 但没有找到任何从 RemoteIO 音频单元保存音频的好示例或教程 我的设置 使用 MusicPlayer API 我有几个 AUSamplers gt MixerUnit gt RemoteIO 音频播放效果很好 我想添加将
  • swift 中的负数模

    负数模如何在 swift 中工作 当我执行 1 3 时 它给出 1 但余数是 2 其中有什么问题 雨燕余数运算符 计算余数 整数除法 a b a a b b where 是截断整数除法 在你的情况下 1 3 1 1 3 3 1 0 3 1
  • 在模拟器中运行应用程序时删除本地通知的 iOS 权限警报

    我正在尝试编写验收测试KIF https github com kif framework KIF在一个很早就要求本地通知权限的应用程序上 不幸的是 由于 iOS 模拟器安全原因无法使用 KIF 自动接受 iOS 权限警报 https gi
  • 如果 NSExtensionActivationRule 设置为仅音频,则共享扩展不会出现在有功能的应用程序中

    我正在尝试创建一个共享扩展 用户可以从任何有能力的应用程序上传她的录音 该文档甚至有一个简单的示例 请参阅声明共享或操作扩展支持的数据类型 https developer apple com library content document
  • Cognito/IAM 策略和 S3 获取对象

    我正在尝试将 S3 和 Cognito 集成到我的 iOS 应用程序中 但到目前为止尚未成功 我相信该错误与我针对 Auth 和 Unauth 用户的 IAM 策略有关 所以这是我的政策 Version 2012 10 17 Stateme
  • Swift 中 UIImages 的淡入淡出动画

    我有一组图像 我希望它们在登录屏幕的背景中淡出 我无法在 swift 中找到任何可以做到这一点的东西 有什么办法我可以做到吗 这是我当前的代码 override func viewDidLoad super viewDidLoad star
  • iOS 发送 iMessage 尽可能简单

    我希望能够以编程方式发送 iMessage 除了调用一个将文本发送到带有消息的号码的函数之外 无需执行任何其他操作 这两个消息都是文本框 我真的很感激一些示例代码 因为我在网上搜索过 但我发现没有任何帮助 这不适用于商业应用程序 仅适用于我
  • iOS 对 Google 云消息传递的支持

    我在谷歌的开发者控制台中看到 GCM 允许为 iOS 生成 API 密钥 我在网上搜索了有关如何在 iOS 应用程序中通过 GCM 实现推送通知的任何类型的文档 但没有找到答案 真的有可能在 iOS 应用程序中使用 GCM 实现推送通知 j

随机推荐

  • git 复制特定版本的存储库

    我是 git 新手 所以如果这是一个愚蠢的问题 请原谅我 我有一个 git 存储库 我需要将存储库的特定修订版复制到其自己的单独目录中 复制的版本本身不需要是 git 存储库 我不需要或想要历史记录或 git 文件夹 只是特定提交的存储库的
  • 从现有表中过滤 SQL DDL 语句的列名称

    是否可以在 psql 中过滤列名本身 我想在一个单独的模式 伪代码 中生成原始表的有限版本 具有数百列 create table why am i doing this select from original table where co
  • 在Python中检测白色背景上的物体

    我正在尝试使用 Python 来检测白色表面上有多少个物体 示例图像位于本文末尾 我想知道应该如何做到这一点 主要是因为背景是白色的 并且大多数时候它被检测为前景 基于本教程 我现在在 Python 中拥有的内容 http pythonvi
  • 在谷歌脚本中将谷歌电子表格转换为xls [重复]

    这个问题在这里已经有答案了 可能的重复 Google Apps 脚本通过电子邮件发送 Google 电子表格 Excel 版本 我到处寻找这个但无法让它工作 我正在发送一封电子邮件 其中包含谷歌应用程序脚本中的附件 该文档是一个谷歌电子表格
  • C 中的 FILE 关键字到底是什么?

    我已经开始学习一些 C 作为一种爱好 并且已经盲目地使用 FILE 作为文件指针的声明相当长一段时间了 我一直在想 这是 C 用来处理文件的关键字或特殊数据类型吗 它是否包含文件内的流和其他数据 为什么定义为指针呢 举一个例子来说明我的意思
  • jQuery - 在文本后添加元素

    我有一个带有一些链接的导航 ul class nav li a class active linkname a li li li ul 现在我需要直接在 linkname 之后添加额外的内容 如下所示 ul class nav li a c
  • 当我的应用程序被删除时呼叫状态更改网络服务

    在我的应用程序中 我使用网络服务 当用户登录到我的应用程序时 我的应用程序发送状态为 1 的请求意味着已登录 当单击注销按钮时 单击发送状态为 0 的请求 现在的问题是 当用户从设备中删除应用程序时 我的服务器中的状态保持为 1 登录 因此
  • 我创建了一个自定义 powershell .psm1 模块,但编辑后它不会更新

    我在中创建了一个自定义的powershell模块 C Program Files WindowsPowerShell Modules PennoniAppManagement目录 每当我对模块中的函数进行更改 然后将模块导入到脚本中时 更新
  • AllowHtml 不适用于 ASP.Net Mvc 3 站点

    我们尝试在 ViewModel 属性之一上使用 AllowHtml 装饰 以便避免 YSOD 从以下位置检测到潜在危险的 Request Form 值 客户端 请求文本 br 当我们尝试提交 html 文本时 例如 br 然后我们希望在控制
  • PushBots 应用程序崩溃

    我正在制作一个 Android 应用程序 它使用 PushBots 来使用推送通知服务 我想要做的是 当我收到推送通知时 我想将消息保存在 TextView 中 以便我可以拥有所有收到消息的历史记录 我做了 PushBots 网站上写的所有
  • 如何使用 Orion 在传出通知中添加自定义标头?

    我阅读了 自定义通知 部分NGSv2 规范我仍然对如何进行这项工作存有疑问 我是否必须将以下代码作为有效负载放入订阅 POST 中 httpCustom url http foo com entity id headers Content
  • 如何从文件中删除与正则表达式不匹配的行?

    我有一个大文件 如下所示 7f0c41d6 f9c6 47aa a034 d40bc629c973 csv 159890 159891 24faaed6 62ee 4175 8430 5d73b09911c8 csv 159907 5bad
  • 如何在后台启动 PhantomJS + Selenium 窗口?

    我在我的应用程序中使用 selenium phantomjs 但我想在后台启动我的应用程序 selenium 和 phantomjs 窗口 我该怎么做 I tried PhantomJSOptions options new Phantom
  • 从 S3 传输到 Google 存储 - 密钥不正确

    过去几个小时我一直在尝试设置从 S3 到我的谷歌存储桶的传输 创建传输时 我不断收到的错误是 访问密钥无效 请确保 S3 存储桶的访问密钥正确 或将存储桶权限设置为授予所有人 访问密钥和秘密都是正确的 因为它们当前在生产中用于 S3 完全访
  • 一组中的 d3 矩形干扰另一组中的矩形

    我有一个小组叫groove它有两个矩形 这些与数据无关 我也有一个群叫group其中有许多与数据绑定的矩形 在第二组中称为group只有三个数据点 但只显示两个 为什么第一个没有被渲染 我以前见过这个 但不记得如何解决 var margin
  • JavaScript 绑定问题

    这是让我感到困惑的代码片段 var timer start function var self this Why the code below doesn t write to this window setInterval self ti
  • 模板类的 CUDA 链接器错误

    在 ubuntu 上使用 CUDA 5 0 和 gcc g 4 6 在使用模板链接 CUDA 代码时遇到错误 cu array cu include cu array hpp template
  • C# - 如何将图像转换为 8 位彩色图像?

    我需要将从文件加载的 PNG 图像转换为另一个设备使用的每像素 8 位字节数组 嵌入式编程 我正在逐像素复制到使用 16 位颜色创建的新图像中 Format16bppRgb565 但是我需要Format8bpp NET Framework
  • Java 中的修剪字符

    如何在 Java 中修剪字符 e g String j joe jill Trim new char j应该 乔 吉尔 String j jack joe jill Trim jack j应该 乔 吉尔 etc 阿帕奇共享区有一个伟大的St
  • UISearchDisplayController隐藏导航栏

    我看到一个奇怪的情况 我在导航栏中放置了一个搜索栏 并将 UISearchDisplayController 与搜索栏链接起来 现在 当用户单击搜索栏时 搜索显示控制器倾向于隐藏导航栏 因此也隐藏搜索栏 为了解决这个问题 我对 UISear