首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何以编程方式在UINavigationController的左栏按钮项目中显示UISearchController,并在搜索后隐藏它?

在编程中,可以通过以下步骤在UINavigationController的左栏按钮项目中显示UISearchController,并在搜索后隐藏它:

  1. 首先,创建一个UISearchController的实例,并设置其搜索结果更新的代理方法。
代码语言:txt
复制
let searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
  1. 然后,将UISearchController的搜索栏设置为UINavigationItem的titleView。
代码语言:txt
复制
navigationItem.titleView = searchController.searchBar
  1. 接下来,设置UISearchController的外观样式和搜索栏的属性,例如占位符文本、背景颜色等。
代码语言:txt
复制
searchController.searchBar.placeholder = "搜索"
searchController.searchBar.barTintColor = UIColor.white
  1. 然后,创建一个UIBarButtonItem,并将其设置为UINavigationItem的leftBarButtonItem。
代码语言:txt
复制
let searchButton = UIBarButtonItem(barButtonSystemItem: .search, target: self, action: #selector(showSearchController))
navigationItem.leftBarButtonItem = searchButton
  1. 在showSearchController方法中,显示UISearchController。
代码语言:txt
复制
@objc func showSearchController() {
    navigationItem.titleView = searchController.searchBar
    navigationItem.setLeftBarButton(nil, animated: true)
    searchController.isActive = true
}
  1. 最后,在UISearchResultsUpdating协议的代理方法中,处理搜索结果更新的逻辑,并在搜索结束后隐藏UISearchController。
代码语言:txt
复制
func updateSearchResults(for searchController: UISearchController) {
    // 处理搜索结果更新的逻辑
    
    if !searchController.isActive {
        navigationItem.titleView = nil
        navigationItem.leftBarButtonItem = searchButton
    }
}

这样,当点击左栏按钮时,会显示UISearchController的搜索栏,进行搜索后会隐藏搜索栏,并恢复左栏按钮。

在腾讯云的产品中,可以使用腾讯云移动直播(TCMobileLive)来实现音视频直播功能。腾讯云移动直播提供了丰富的功能和服务,包括直播推流、直播播放、直播录制、直播转码等。您可以通过以下链接了解更多关于腾讯云移动直播的信息:

腾讯云移动直播产品介绍

请注意,以上答案仅供参考,具体实现方式可能因开发环境和需求而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Cocoa编程中视图控制器与视图类详解

设置导航按钮并不是去设置导航本身。一切都是在被推入UIViewController子类内部执行推入请求和相关导航定制(:右键按钮)。...其描述了导航显示内容,而正好UIViewController另有一导航属性navigationItem包括按钮(leftBarButtonItem)、右按钮(rightBarButtonItem...)和标题(title)、用于显示标题视图(titleView),以及用于从当前视图向后导航Back按钮(backBarButtonItem)和隐藏后退按钮(hidesBackButton)。...注意:对于导航定制,对定制实际标题最简单方式时使用子视图控制器而不是导航title属性: C代码   self.title = @"Hello";   self.title = [[[NSBundle...UITabBarController类       选项卡类允许用户多个视图控制器之间移动并在屏幕底部可定制该

5K50

你可能需要为你 APP 适配 iOS 11

本文内容包括:集成了搜索大标题、横向选项卡、Margins 和 Insets以及 UIScrollView和UITableView 更新和功能更强大滑动操作。 一....navigationItem.searchController //iOS 11 新增属性 navigationItem.hidesSearchBarWhenScrolling //决定滑动时候是否隐藏搜索框...;iOS 11 新增属性 UINavigationController和滚动交互 滚动时候,以下交互操作都是由UINavigationController负责调动UIsearchController...提供两种方式:safeAreaInsets或safeAreaLayoutGuide来提供给你safeArea参照值,即 insets 或者 layout guide。...这个类只能定义按钮显示文字、背景色、和按钮事件。并且返回数组第一个元素UITableViewCell最右侧显示,最后一个元素最左侧显示

1.6K60

iOS 问题总结(五)

这个属性为YES时候,搜索框进入编辑模式会导致,搜索不可见,偏移 -64 ;设置为 NO 时候,进入编辑模式输入内容会导致高度为 64 白条,猜测是导航没有渲染出来。...但是经过测试,情况还是和上图一样,搜索还是偏移 -64,不能显示。...现在搜索没有发生偏移,但是导航却没有隐藏,于是我把 NO 改为了 YES,运行如下图: ? ? 结果还是发生了偏移。...然后我又把隐藏导航设置为了YES: _searchController.hidesNavigationBarDuringPresentation = YES; 搜索框就能正常显示了,如下图: ?...然后我又试着把隐藏导航属性注释掉,然后运行,还是能够正常显示,下面是随后代码: -(UISearchController *)searchController { if (_searchController

1.5K10

你可能需要为你 APP 适配 iOS11

本文内容包括:集成了搜索大标题、横向选项卡、Margins 和 Insets以及 UIScrollView和UITableView 更新和功能更强大滑动操作。...提供两种方式:safeAreaInsets或safeAreaLayoutGuide来提供给你safeArea参照值,即 insets 或者 layout guide。...来改变safeAreaInsets值,当你viewController改变了safeAreaInsets值时,有两种方式获取到回调: 三、UIScrollView and UITableView...值变化,如果是有动画是观察这两个属性变化进行,就会造成动画异常,因为估算行高机制下,contentSize值是一点点地变化更新,所有cell显示才是最终contentSize值。...这个类只能定义按钮显示文字、背景色、和按钮事件。并且返回数组第一个元素UITableViewCell最右侧显示,最后一个元素最左侧显示

2.4K00

你可能需要为你APP适配iOS11

本文内容包括:集成了搜索大标题、横向选项卡、Margins 和 Insets以及 UIScrollView和UITableView 更新和功能更强大滑动操作。...提供两种方式:safeAreaInsets或safeAreaLayoutGuide来提供给你safeArea参照值,即 insets 或者 layout guide。...来改变safeAreaInsets值,当你viewController改变了safeAreaInsets值时,有两种方式获取到回调: 三 UIScrollView and UITableView...值变化,如果是有动画是观察这两个属性变化进行,就会造成动画异常,因为估算行高机制下,contentSize值是一点点地变化更新,所有cell显示才是最终contentSize值。...这个类只能定义按钮显示文字、背景色、和按钮事件。并且返回数组第一个元素UITableViewCell最右侧显示,最后一个元素最左侧显示

81020

iOS学习—— UINavigationController返回按钮与侧滑返回手势研究

导航左上角back按钮是附着UINavigationControllerUINavigationBar里自带一个返回按钮,导航自带back按钮图层结构如下图所示。...因为侧滑返回手势事实上是由存在已久UIPanGestureRecognizer来识别并响应直接与UINavigationControllerview进行绑定,因此包含UIScrollView...:[self.navigationController screenEdgePanGestureRecognizer]];  二 导航back按钮   了解导航返回按钮之前,我们先了解一下导航管理导航上各类控件...此外,如果是自定义按钮,则系统不会修改其值。...对于导航按钮三兄弟,我们3个类下面都能发现他们,比如当前一个UIViewController内,输入以下方法都能发现他们。

6.4K60

【IOS开发基础系列】Navigation页面导航专题

对于父级VC与子级VC分别有navigationController情况,即不是使用push方式加载子VC,而是通过AddChildViewController方式添加场景,则父级导航条会覆盖子级导航条上面...,所以需要在载入时把父级导航条做隐藏处理: 1.2 navigationItem         含有导航条ViewController中,VCnavigationItem与VC.navigationController...        最近iOS项目中要求导航返回按钮只保留那个箭头,去掉后边文字,在网上查了一些资料,最简单且没有副作用方法就是: [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment...[self.navigationItem setHidesBackButton: YES]; 2.5.5 设置导航标题字体颜色和大小     方法一:(自定义视图方法,一般人也会采用这样方式)...2.5.8 Tabbar显示隐藏 Tabbar隐藏函数,其实只Nav Push之前调用时起作用 //隐藏Tabbar [viewController setHidesBottomBarWhenPushed

34420

UI篇-UINavigationController之易忘补充

入口类中全局设置就可以达到统一导航颜色效果。  ...navigationItem navigationItem是UIViewController一个属性,包含了当前页面导航上需要显示全部信息,这个属性是为UINavigationController...UINavigationItem属于MVC中M,封装了要显示UiNavigationBar上数据,定义了UINavigationItem上按钮触发事件,外观等 -initWithBarButtonSystemItem...:按钮  rightBarButtonItem :右按钮  backBarButtonItem  :返回按钮UINavigationController相似,UINavigationBar...每个视图控制器都有一个navigationItem属性,navigationItem中设置按钮、右按钮、标题等,会随着控制器显示,也显示到navigationBar上 我们来看一下这些名词是什么意思

2.1K20

iOS:分割控制器UISplitViewcontroller

分割控制器UISplitViewController 功能:它也是ipad一个新特性,屏幕上可以同时显示两个控制器,左边一个,右边一个;左边为主控制器,右边为详细控制器,主控制器可以根据需要显示隐藏...它对于iPhone虽然可以使用,但是不具备同时显示特点,iPhone样式,就是导航控制器切换模式。...master时,detail控制器toolbar上设置并显示一个按钮 barButtonItem.title = @“Master”; [detailViewController...上基本样式截图为: 故事板布局样式截图为: 下面我们就通过纯代码方式创建如下: 1、创建两个控制器类,一个为主控制器类MasterViewController,一个为详细控制器类DetailViewController...self.tableView.delegate = self; [self.view addSubview:self.tableView]; //设置主控制器Master导航按钮

1.8K30

UINavigationController 导航控制器概念属性方法

管理着ToolBar,通过navigationController.toolbar方式调用 控制器管理东西 每个界面的Controller管理一个界面的NavigationItem(通过controller...*barHideOnSwipeGestureRecognizer; 10、屏幕滑动时候是否隐藏导航,常用于tableView,上滑隐藏导航,下滑显示,带动画效果 @property (nonatomic...; 13、敲击屏幕可以隐藏显示导航 @property (nonatomic, readwrite, assign) BOOL hidesBarsOnTap; 14、获取敲击屏幕手势 @property...系统会为分配一些属性 (1)当前controller对应导航 @property(nonatomic,readonly,strong) UINavigationItem *navigationItem...; (2)push时候隐藏底部push隐藏tabbar @property(nonatomic) BOOL hidesBottomBarWhenPushed; (3)获取管理导航控制器 @

2.1K60

iOS开发UINavigation系列四——导航控制器UINavigationController

; 四、iOS8导航新特性 //这个方法是为了iOS方法命名统一,导航中,其作用和push一样 - (void)showViewController:(UIViewController *)vc...; //屏幕滑动时候隐藏导航,常用于tableView,上滑隐藏导航,下滑显示,带动画效果 @property (nonatomic, readwrite, assign) BOOL hidesBarsOnSwipe...; //横屏时候隐藏导航 @property (nonatomic, readwrite, assign) BOOL hidesBarsWhenVerticallyCompact; //敲击屏幕可以隐藏显示导航...系统会为分配一些属性,如下: //当前controller对应导航 @property(nonatomic,readonly,strong) UINavigationItem *navigationItem...; //push时候隐藏底部push隐藏tabbar @property(nonatomic) BOOL hidesBottomBarWhenPushed; //管理导航控制器 @property

1.8K20

iOS 9人机界面指南(四):UI元素(上) - 腾讯ISUX

不要创建自定义状态。用户依赖系统默认状态一致性。就算你可能会在应用中隐藏,也不宜定制一个新UI来代替原有系统状态。 避免滚动内容直接透过状态显示。...千万千万,避免状态后面叠加会分散注意力内容。尤其是,你不能让用户觉得轻击状态之后可以获取内容或激活你应用中控件。 隐藏状态时请慎重。由于状态是透明,通常情况下不需要隐藏。...) 显示用户指定时间内访问过 搜索(Search) 进入搜索模式 评分最高(Top Rated) 显示用户评分最高 4.1.7 搜索 搜索获取用户键入文本,用以作为搜索关键字...大多数搜索都会提供清除按钮,方便用户一键清空输入内容。 ? 一旦用户文本框中输入内容,清除按钮就会出现,用户可以用它来一键清空输入内容;而当搜索框中没有任何文本内容时,清空按钮将被隐藏。...如果需要的话,设计一种自定义方式让用户可以以非线性方式来获取内容。页面视图控制器让用户从一页移动到前一页或者一页,而并不支持用户并不相邻页面间快速切换。

10.1K51

iOS第三方类库IIViewDeck使用方法

先看一下效果图: 首先是主视图,也就是中间视图: image.png 上方是Navbar,左边有一个按钮用来开启左边视图,当然左右视图都是可以通过左右滑动来开启,中间Label显示这是哪里界面...就像QQ、知乎之类效果一样,也很简单,为了方便,这里我们将中间视图包装成Nav导航视图,然后以换出视图为例,导航上左侧添加一个按钮,在按钮响应中实现唤出左侧视图: //.h文件 @property...更改按钮响应方法如下: //中间导航左侧按钮响应 - (void)toLeft { //判断是否打开,做出不同响应 if ([self.deckController isSideOpen...还有,既然上面实现了再次点击按钮返回中间界面,说明中间界面的控件是可以响应,那用户不小心点击到了不该点怎么办,可不可以在打开左右视图,禁止中间界面控件响应呢?当然是可以。...好像还漏了一个事情,从上面的图可以看出,左边和右边视图出现时占据屏幕宽度是不一样实际目中,往往也是根据需要占据不同宽度,那么怎么设置呢?

60920

Human Interface Guidelines —— 导航(Navigation Bars)

Navigation Bars 位置 Navigation Bars显示app屏幕顶部,位于status bar(状态)下方,并可穿过一系列不同层级屏幕进行导航。 ...照片在查看全屏照片时会隐藏navigation bar和其他界面元素。 如果你实现这类行为,让用户用简单手势恢复导航点击。...:标准标题    右:大标题 如果需要额外强调上下文,请使用大标题。 某些app中,大标题大号加粗文本可以帮助用户浏览和搜索时知道自己所在位置。...例如, tabbed layout中,大型标题可以帮助看清当前活动tab,并在用户滚动到顶部时通知用户。  手机使用这种方法,而音乐使用大标题来区分内容区域,专辑,艺术家,播放列表和广播。...人们知道标准后退按钮可以让他们通过层级信息返回。但是,如果您实现了自定义后退按钮,请确保仍然看起来像后退按钮,直观,与剩下页面交互方式保持匹配,并始终贯穿于您应用程序中。

2.4K110

iOS导航切换界面时隐藏显示

,往往又需要重新显示导航,关于这样一种设计苹果并没有给出专门设置,需要我们自己来做,但在尝试了多种方法之后其实也没有很好方法,QQ其实做挺好,如果你现在动手去尝试一下,会发现有无导航转换之间有一个渐变毛玻璃效果...本文只讲最简单实现方式单纯UINavigationController下是表现ok,但是如果同时还涉及到UITabbarController,就会有一些瑕疵,下面是要实现效果,可以观察一下瑕疵在哪...YES,否则显示界面就会瞬间出现导航,而达不到平滑效果。...代理中去做隐藏,并且分别是有动画和没动画,但是因为 Tabbar所包含其实是 UINavigationController ,所以点击 Tabbar 切换界面时两个代理方法都会被调用,无解啊。...这个方法是直接隐藏了整个导航,所以如果要保存导航一些返回按钮以及其他自定义按钮,就需要自己界面上去模拟添加,如果不想这么麻烦,也可以不隐藏导航,而是将导航背景视图设为透明: [

3.8K30

“世界上最好编辑器Source Insight”

该窗口和源文件窗口相依相存,同时出现或隐藏显示源文件窗口左边,展示了当前文件中所有符号列表。如下图所示: ?...(1)概貌 如下图所示,为项目默认窗口概貌图,我们可以看到,显示了项目名称,快速搜索,中间内容显示区和底部工具,当然还有右上角最大/最小化和关闭按钮。 ?...(3)工具 默认选择是显示,也可以通过该项目窗口点击右键显示菜单“Toolbar”选项来显示/隐藏工具。...默认选择为该项,“内容显示区”显示当前项目中所有文件列表,并降序排列,概貌图中所示。...当选择“Search Result Window”中某一时,会在“Context Window”中实时显示其上下文内容,如下图中④去所示。搜索结果前都有一个红色按钮③区所示。

2.6K20

UI篇-关于单个页面屏幕旋转要注意问题

,在手机方向不变情况下,所以,最好把状态隐藏掉,回复时候再显示出来。...Paste_Image.png 一般我们rootViewController 都是UINavigationcontroller ,所有我们UINavigationcontroller中设置如下方法...按照上面的方法我确实达到了,单页面旋转,其他页面不旋转效果,但是有个问题: 页面不旋转情况下,状态确会随着手机旋转而旋转,着实蛋疼。目前不清楚为什么一样设置,两个项目中效果不一样。...所以页面支持方向是一定要设定,不设定的话就是默认中右。 屏幕旋转中其它问题 如何应用程序刚启动时判断设备方向呢?...,如何显示出来 //iOS8 横屏时候系统默认隐藏了 [UIApplication sharedApplication].statusBarHidden = YES; [UIApplication

3.5K20

# iOS导航控制Tips

许久不写UI,对UI很多东西都生疏了,最近使用导航各种场景做一些总结。 1.导航显示隐藏 导航显示隐藏,分两种情况: 1.从不显示导航页面push到显示导航页面。...2.从显示导航页面Push到不显示导航页面。 注意: 1.如果导航显示时,系统侧滑返回功能无效。...针对以上两种情况分别处理,整个Push过程都假设是从A页面跳转到B页面 1.1 从不显示导航页面Push到显示导航页面。 关于导航显示,是否顺滑,是通过如下两个方法来控制。...// 不显示动画,导航显示就比较突兀 [self.navigationController setNavigationBarHidden:YES]; // 显示动画,侧滑时,导航显示就比较顺滑...比如,当页面用户输入了一些内容,用户要点击返回,想要回到上一个页面时,提醒用户是否要缓存已经输入内容。 如果我们重写了导航返回按钮,那么处理这种情况就很Easy,不做赘述了。

1.7K31
领券