Swift - 使用UISearchController实现带搜索栏的表格
我原来写过一篇文章“Swift - 带结果列表的搜索条(UISearchDisplayController)的用法”,当时是使用UISearchDisplayController来实现带有搜索功能的列表,由于UISearchDisplayController本身就整合了搜索条和表格,所有用起来很方便。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import UIKit class ViewController : UIViewController { //展示列表 var tableView: UITableView ! //搜索控制器 var countrySearchController = UISearchController () //原始数据集 let schoolArray = [ "清华大学" , "北京大学" , "中国人民大学" , "北京交通大学" , "北京工业大学" , "北京航空航天大学" , "北京理工大学" , "北京科技大学" , "中国政法大学" , "中央财经大学" , "华北电力大学" , "北京体育大学" , "上海外国语大学" , "复旦大学" , "华东师范大学" , "上海大学" , "河北工业大学" ] //搜索过滤后的结果集 var searchArray:[ String ] = [ String ](){ didSet { self .tableView.reloadData()} } override func viewDidLoad() { super .viewDidLoad() //创建表视图 self .tableView = UITableView (frame: UIScreen .mainScreen().applicationFrame, style: UITableViewStyle . Plain ) self .tableView!.delegate = self self .tableView!.dataSource = self //创建一个重用的单元格 self .tableView!.registerClass( UITableViewCell . self , forCellReuseIdentifier: "SwiftCell" ) self .view.addSubview( self .tableView!) //配置搜索控制器 self .countrySearchController = ({ let controller = UISearchController (searchResultsController: nil ) controller.searchResultsUpdater = self controller.hidesNavigationBarDuringPresentation = false controller.dimsBackgroundDuringPresentation = false controller.searchBar.searchBarStyle = . Minimal controller.searchBar.sizeToFit() self .tableView.tableHeaderView = controller.searchBar return controller })() } override func viewDidAppear(animated: Bool ) { super .viewDidAppear( true ) self .tableView.reloadData() } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
import Foundation import UIKit extension ViewController : UITableViewDataSource { func tableView(tableView: UITableView , numberOfRowsInSection section: Int ) -> Int { if ( self .countrySearchController.active) { return self .searchArray.count } else { return self .schoolArray.count } } func tableView(tableView: UITableView , cellForRowAtIndexPath indexPath: NSIndexPath ) -> UITableViewCell { //为了提供表格显示性能,已创建完成的单元需重复使用 let identify: String = "SwiftCell" //同一形式的单元格重复使用,在声明时已注册 let cell = tableView.dequeueReusableCellWithIdentifier(identify, forIndexPath: indexPath) as ! UITableViewCell if ( self .countrySearchController.active) { cell.textLabel?.text = self .searchArray[indexPath.row] return cell } else { cell.textLabel?.text = self .schoolArray[indexPath.row] return cell } } } extension ViewController : UITableViewDelegate { func tableView(tableView: UITableView , didSelectRowAtIndexPath indexPath: NSIndexPath ) { tableView.deselectRowAtIndexPath(indexPath, animated: true ) } } extension ViewController : UISearchResultsUpdating { func updateSearchResultsForSearchController(searchController: UISearchController ) { self .searchArray.removeAll(keepCapacity: false ) let searchPredicate = NSPredicate (format: "SELF CONTAINS[c] %@" , searchController.searchBar.text) let array = ( self .schoolArray as NSArray ).filteredArrayUsingPredicate(searchPredicate) self .searchArray = array as ! [ String ] } } |
Swift - 使用UISearchController实现带搜索栏的表格的更多相关文章
- jquery完成带单选按钮的表格行高亮显示
jquery完成带单选按钮的表格行高亮显示 上篇博客写的是复选框的,这次写的是单选框的,有时查询的时候,只能选择一条记录,如果将选中的这条记录的行高亮显示,同时该行的单选按钮也被选中了,这样会提高用户 ...
- 使用OC和swift创建系统自带的刷新界面
使用OC和swift创建系统自带的刷新界面 一:swift刷新界面代码: import UIKit class ViewController: UITableViewController { // 用 ...
- jQuery 删除行(带跨行的表格)
jQuery 删除行(带跨行的表格) 实现效果,点击删除按钮后,在保证原来表格结构的基础上,移除当前行. 代码原理: 1.点击行后判断当前行的第一个<td>,是否包含rowspan属性,如 ...
- LODOP中带caption的表格被关联并次页偏移测试
ADD_PRINT_TABLE中的thead和tfoot可以每页输出,后面的打印项关联表格,可以紧跟着表格,实现在表格后面紧跟着输出内容的效果,表格可以自动分页,并总是跟在表格后面 ,在表格最后输出. ...
- Swift 脚本(运行时带参数)
#!/usr/bin/env xcrun swift import Foundation let args = Process.arguments print("Arg:\(args)&qu ...
- Bootstrap3 表格-带边框的表格
添加 .table-bordered 类为表格和其中的每个单元格增加边框. <table class="table table-bordered"> ... </ ...
- js导出带格式的表格(包括单元格合并,字体样式等)
function HtmlExportToExcelForEntire() { var uri = 'data:application/vnd.ms-excel;base64,', template ...
- Pyqt5——带图标的表格(Model/View)
需求:表格中第一列内容为学生学号,为了突出学号的表示,在第一列的学号旁增加学号图标. 实现:(1)使用Qt的model-view模式生成表格视图. (2)重写代理(QAbstractItemDeleg ...
- Swift - 带结果列表的搜索条(UISearchDisplayController)的用法
(注:自iOS8起,苹果便废弃UISearchDisplayController的使用,改为使用UISearchController来实现类似功能,可参考我的另一篇文章“Swift - 使用UISea ...
随机推荐
- IT第五天 - 循环的使用、本周总结 ★★★
IT第五天 上午 循环 1.while循环.do-while循环.switch语句块的使用 下午 编程 1.编程注释的编写 2.编程力求代码的精简,算法的优化 3.变量的优化使用 小项目 1.swit ...
- 用newLISP读取Hive的元数据
思想是通过调用hive -e命令,然后解析返回的结果. 以下的hive.lsp文件是一个样例,提供了读取本地hive数据库名称.表名,表结构和依据hive表的创建语句生成相应的MySQL的创建语句. ...
- WinForm界面中快捷键设置
这是对整个界面的快捷键的设置,比如查询,保存. 1 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if ...
- BZOJ 3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题( dp )
01背包... ----------------------------------------------------------------------- #include<cstdio&g ...
- [javascript]在浏览器端应用cookie记住用户名
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- bash有空格的文件名
http://www.keakon.net/2011/10/20/bash%E4%B8%8B%E5%A4%84%E7%90%86%E5%8C%85%E5%90%AB%E7%A9%BA%E6%A0%BC ...
- Pencil OJ 02 安装
Mongo 官方的安装方法 官方教程已经很好啦,这里就不罗嗦了. 源码编译 待补.我是从这里看到的. 遇到的问题 启动时的警告信息 2015-03-06T21:01:15.526-0800 I CON ...
- android 发送短信 怎样做到一条一条的发送,仅仅有在上一条发送成功之后才发送下一条短信
android发送短信截获上一条发送是否成功,然后再来发送下一条短信 1.问题:在项目中遇到例如以下要求:待发短信有N条,实现一条一条的发送并在上一条短信发送成功之后再来发送下一条. for(int ...
- VS2010 ,工程文件减肥
写一个bat文件来清理VS2010工程文件. 将其放入到工程文件夹下,双击即可自动将sdf,ipch等占用空间很大的文件删除. 这样的方式较之于转移浏览数据库文件的位置而言更为灵活一些,不用特别的设置 ...
- ant-学习记录二
<?xml version="1.0"?> <project name="targetStudy" default="mkdir&q ...