记录下UISearchBar的基本用法,补充:ios 8.0以后,原来的UISearchDisplayController被官方废弃,建议使用UISearchController,下面就简单的记录下这两种控件的使用。

1,UISearchBar,代码如下:

a,声明

class NinethViewController: UIViewController,UISearchBarDelegate,UITableViewDelegate,UITableViewDataSource

b,准备,创建所需要的变量

 var searchBar:UISearchBar!var hTabV:UITableView!var ctrls:[String] = ["a","b","c","d","e"]var ctrlsel:[String] = []

c,具体方法和代理方法的实现

func creatUI(){self.ctrlsel = self.ctrlsself.searchBar = UISearchBar(frame:CGRect(x:0,y:64,width:kScreenWidth,height:50))self.searchBar.delegate = self
//        self.searchBar.setShowsCancelButton(true, animated: true)
//        self.searchBar.showsSearchResultsButton = trueself.searchBar.placeholder = "请输入你想搜索的内容"
//        self.searchBar.showsCancelButton = false
        self.view.addSubview(self.searchBar)self.hTabV = UITableView(frame:CGRect(x:0,y:50+64,width:kScreenWidth,height:kScreenHeight-50))self.hTabV.delegate = selfself.hTabV.dataSource = selfself.hTabV.tableFooterView = UIView()self.hTabV.register(UITableViewCell().classForCoder, forCellReuseIdentifier: "cell")self.view.addSubview(self.hTabV)}

补充,Options属性,可设置如下功能样式:

showsSearchResultsButton  搜索框右边显示一个圆形向下的按钮,单机会发送特殊事件
showsBookmarkButton  搜索框右边会显示一个书本的按钮,单机会发送特殊事件
showsCancelButton  搜索框右边会出现一个“cancel”按钮,单击会发送特殊事件
isSearchResultsButtonSelected  搜索结果按钮被选中
showsSearchResultsButton 搜索结果显示按钮

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {print(searchText)
//        没有搜索内容时显示全部组件if searchText == "" {self.ctrlsel = self.ctrls}else{self.ctrlsel = []for ctrl in self.ctrls {if ctrl.uppercased().hasPrefix(searchText.uppercased()) {self.ctrlsel.append(ctrl)}}}self.searchBar.endEditing(true)self.hTabV.reloadData()}

c,tableview具体代理方法的实现:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {return self.ctrlsel.count}func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {let identiferStr:String = "cell"let cell = tableView.dequeueReusableCell(withIdentifier: identiferStr, for: indexPath)cell.textLabel?.text = "\(self.ctrlsel[indexPath.row])"cell.accessoryType = .disclosureIndicatorreturn cell}

效果如下:

2,UISearchController的使用

func creatUIs(){self.searchBar = UISearchBar(frame:CGRect(x:0,y:0,width:kScreenWidth,height:50))self.searchBar.showsCancelButton = true//通过参数searchResultsController传nil来初始化UISearchController,意思是我们告诉search controller我们会用相同的视图控制器来展示我们的搜索结果,如果我们想要指定一个不同的view controller,那就会被替代为显示搜索结果。searchController = UISearchController(searchResultsController:nil)//设置代理,searchResultUpdater是UISearchController的一个属性,它的值必须实现UISearchResultsUpdating协议,这个协议让我们的类在UISearchBar文字改变时被通知到,我们之后会实现这个协议。searchController.searchResultsUpdater = self as? UISearchResultsUpdating//默认情况下,UISearchController暗化前一个view,这在我们使用另一个view controller来显示结果时非常有用,但当前情况我们并不想暗化当前view,即设置开始搜索时背景是否显示searchController.dimsBackgroundDuringPresentation = false//设置默认显示内容searchController.searchBar.placeholder = "Search here..."//设置searchBar自适应大小
        searchController.searchBar.sizeToFit()//设置默认显示内容searchController.searchBar.delegate = self//设置definesPresentationContext为true,我们保证在UISearchController在激活状态下用户push到下一个view controller之后search bar不会仍留在界面上。searchController.definesPresentationContext = trueself.hTabV = UITableView(frame:CGRect(x:0,y:0,width:kScreenWidth,height:kScreenHeight))self.hTabV.delegate = selfself.hTabV.dataSource = selfself.hTabV.tableFooterView = UIView()self.hTabV.register(UITableViewCell().classForCoder, forCellReuseIdentifier: "cell")//设置tableview的头视图为searchController.searchBarself.hTabV.tableHeaderView = searchController.searchBarself.view.addSubview(self.hTabV)}

其他的searchbar的代理方法和tableview的代理方法,和上面的一样!

效果如下图:

转载于:https://www.cnblogs.com/hero11223/p/7405501.html

swift开发之--UISearchBar的使用/UISearchController的使用相关推荐

  1. 《Swift开发实战》——第2章,第2.4节函数和闭包

    本节书摘来自异步社区<Swift开发实战>一书中的第2章,第2.4节函数和闭包,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 2.4 函数和闭包 在本 ...

  2. 《Swift开发实战》——第16章,第16.2节下标脚本用法

    本节书摘来自异步社区<Swift开发实战>一书中的第16章,第16.2节下标脚本语法,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 16.2 下标脚本 ...

  3. 《Swift开发实战》——导读

    本节书摘来自异步社区<Swift开发实战>一书中的目录,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 内容简介 前 言 第1章 工欲善其事,必 ...

  4. 《Swift开发实战》——第1章,第1.4节启动iOS 8模拟器

    本节书摘来自异步社区<Swift开发实战>一书中的第1章,第1.4节启动iOS 8模拟器,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 启动i ...

  5. swift开发体验,论objective-c与swift的选择

    使用swift开发已经有半年之久了,期间做了一个电商应用,类似京东,苏宁的.主要谈谈感受,swift简洁的语法,不用写分号,所有自己写得工具类,第三方类库,都能自动import,着实令人大呼过瘾. 但 ...

  6. 用swift开发仪表盘控件(一)

    苹果swift刚刚推出不久,接触到这个语言是一个偶然的机会,无聊之余随便看了下它的语法: 瞬间就被感动了,switch 中竟然大胆淘汰了break,全然是反人类的做法.其它语言没这么大胆和聪明,基本上 ...

  7. swift int转string_用Swift开发macOS程序,九、目录模块

    程序中跟目录模块相似的,也是通过使用Outline View组件显示内容的模块有:备注.搜索.角色.符号.字典等其它五个.设计完成本模块后将不再对其它模块进行说明,一切请查看Github上代码.目录模 ...

  8. IOS swift开发——获取设备定位信息

    作为GIS开发人员,学习任何Android或者swift开发语言,可能第一时间想到的就是获取设备的定位信息.这里就来简述一下,我使用swift获取IOS定位信息的过程. 目录 添加后台定位能力 模拟器 ...

  9. linux swift开发环境,Linux平台swift语言开发学习环境搭建

    摘要 介绍在Ubuntu平台搭建Swift开发环境: 介绍Swift脚本解析器swift的使用: 介绍Swift编译器swiftc的使用: 1.序言 这两天一直忙,没来得及记录东西,周三12月4日凌晨 ...

最新文章

  1. spring 数组中随机取几个_游戏编程中需要掌握哪些数学物理知识
  2. flutter中list相关操作汇总(有这一篇就够啦)
  3. u-tools图床便捷生成markdown图片
  4. python自训练神经网络_tensorflow学习笔记之简单的神经网络训练和测试
  5. 数学6年级测试软件,苏教版数学六年级下册2018年小学六年级毕业测试试卷(无答案).doc...
  6. ECshop生态全面开放,城市合伙人招募火热启动
  7. 装个discuz论坛
  8. 你真的要收下这份大礼包!!
  9. WeaveScope-容器监控
  10. Linux下文件查找命令
  11. 不小心把Run Dashboard隐藏了多服务运行操作菜单找不到?springboot多服务快速启动窗口打开,按照这个办法完美解决!
  12. 单片机作业1_为OLED制作汉字字库_第1部分
  13. .NET Reflector + ILSpy 反编译过程
  14. 王朝娱乐H5 游戏源码(cocos creator , pomelo + mongDB)搭建教程
  15. 01 官网下载各种CentOS教程(超详细版)
  16. 操作系统学习笔记十二(基于分页的虚拟存储系统)
  17. Centos7 切换为163 网易yum
  18. 内网渗透建立代理通道(如何攻击目标内网机器?)-Socks代理(゚益゚メ) 渗透测试
  19. 怎么把html变成桌面壁纸,新手必看,把静态壁纸变为动态壁纸怎么设置?
  20. 跟着项目学设计模式(六):三层架构

热门文章

  1. log4j显示hibernate sql参数的配置
  2. php5.3中的safe_mod与magic_quotes_gpc
  3. FGMap学习之--加载百度地图
  4. js和Java分别正则匹配小数点后多余的0
  5. 50 种系统免遭黑客侵袭的方法 [2017 年版]
  6. C# Keywords - is
  7. JavaScript与有限状态机
  8. ruid/euid/suid
  9. Asp.net + Silverlight发布到IIS7
  10. 对系统故障处理的思考