Swift - 搜索条(UISearchBar)的用法



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
60
61
62
63
64
65
66
67
68
69
70
|
import UIKit class ViewController : UIViewController , UISearchBarDelegate , UITableViewDataSource , UITableViewDelegate { // 引用通过storyboard创建的控件 @IBOutlet var searchBar : UISearchBar ! @IBOutlet var tableView : UITableView ! // 所有组件 var ctrls:[ String ] = [ "Label" , "Button1" , "Button2" , "Switch" ] // 搜索匹配的结果,Table View使用这个数组作为datasource var ctrlsel:[ String ] = [] override func viewDidLoad() { super .viewDidLoad() // 起始加载全部内容 self .ctrlsel = self .ctrls // 注册TableViewCell self .tableView.registerClass( UITableViewCell . self , forCellReuseIdentifier: "SwiftCell" ) } // 返回表格行数(也就是返回控件数) func tableView(tableView: UITableView , numberOfRowsInSection section: Int ) -> Int { return self .ctrlsel.count } // 创建各单元显示内容(创建参数indexPath指定的单元) func tableView(tableView: UITableView , cellForRowAtIndexPath indexPath: NSIndexPath ) -> UITableViewCell { // 为了提供表格显示性能,已创建完成的单元需重复使用 let identify: String = "SwiftCell" // 同一形式的单元格重复使用,在声明时已注册 let cell = tableView.dequeueReusableCellWithIdentifier(identify, forIndexPath: indexPath) as UITableViewCell cell.accessoryType = UITableViewCellAccessoryType . DisclosureIndicator cell.textLabel?.text = self .ctrlsel[indexPath.row] return cell } // 搜索代理UISearchBarDelegate方法,每次改变搜索内容时都会调用 func searchBar(searchBar: UISearchBar !, textDidChange searchText: String !) { // 没有搜索内容时显示全部组件 if searchText == "" { self .ctrlsel = self .ctrls } else { // 匹配用户输入内容的前缀 self .ctrlsel = [] for ctrl in self .ctrls { if ctrl.lowercaseString.hasPrefix(searchText) { self .ctrlsel.append(ctrl) } } } // 刷新Table View显示 self .tableView.reloadData() } // 搜索代理UISearchBarDelegate方法,点击虚拟键盘上的Search按钮时触发 //func searchBarSearchButtonClicked(searchBar: UISearchBar!) { //searchBar.resignFirstResponder() //} override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } |
--- Main.storyboard ---
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
|
<? xml version = "1.0" encoding = "UTF-8" standalone = "no" ?> < document type = "com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version = "3.0" toolsVersion = "6254" systemVersion = "14B25" targetRuntime = "iOS.CocoaTouch" propertyAccessControl = "none" useAutolayout = "YES" useTraitCollections = "YES" initialViewController = "BYZ-38-t0r" > < dependencies > < plugIn identifier = "com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version = "6247" /> </ dependencies > < scenes > <!--View Controller--> < scene sceneID = "tne-QT-ifu" > < objects > < viewController id = "BYZ-38-t0r" customClass = "ViewController" customModule = "SwiftInAction_008_012" customModuleProvider = "target" sceneMemberID = "viewController" > < layoutGuides > < viewControllerLayoutGuide type = "top" id = "y3c-jy-aDJ" /> < viewControllerLayoutGuide type = "bottom" id = "wfy-db-euE" /> </ layoutGuides > < view key = "view" contentMode = "scaleToFill" id = "8bC-Xf-vdC" > < rect key = "frame" x = "0.0" y = "0.0" width = "600" height = "600" /> < autoresizingMask key = "autoresizingMask" widthSizable = "YES" heightSizable = "YES" /> < subviews > < tableView clipsSubviews = "YES" contentMode = "scaleToFill" fixedFrame = "YES" alwaysBounceVertical = "YES" dataMode = "prototypes" style = "plain" separatorStyle = "default" rowHeight = "44" sectionHeaderHeight = "22" sectionFooterHeight = "22" translatesAutoresizingMaskIntoConstraints = "NO" id = "eUR-Ky-A8I" > < rect key = "frame" x = "6" y = "32" width = "320" height = "440" /> < color key = "backgroundColor" white = "1" alpha = "1" colorSpace = "calibratedWhite" /> < searchBar key = "tableHeaderView" contentMode = "redraw" id = "8pv-hH-OQ9" > < rect key = "frame" x = "80" y = "218" width = "320" height = "44" /> < autoresizingMask key = "autoresizingMask" flexibleMaxX = "YES" flexibleMaxY = "YES" /> < textInputTraits key = "textInputTraits" /> < connections > < outlet property = "delegate" destination = "BYZ-38-t0r" id = "0l9-UU-iHJ" /> </ connections > </ searchBar > < connections > < outlet property = "dataSource" destination = "BYZ-38-t0r" id = "o1t-B2-xHp" /> < outlet property = "delegate" destination = "BYZ-38-t0r" id = "p1t-kn-J9Q" /> </ connections > </ tableView > </ subviews > < color key = "backgroundColor" white = "1" alpha = "1" colorSpace = "custom" customColorSpace = "calibratedWhite" /> </ view > < connections > < outlet property = "searchBar" destination = "8pv-hH-OQ9" id = "B0M-ya-PE5" /> < outlet property = "tableView" destination = "eUR-Ky-A8I" id = "YCI-P6-0gY" /> </ connections > </ viewController > < placeholder placeholderIdentifier = "IBFirstResponder" id = "dkx-z0-nzr" sceneMemberID = "firstResponder" /> </ objects > </ scene > </ scenes > </ document > |
上一篇Swift - 将表格UITableView滚动条移动到底部
Swift - 搜索条(UISearchBar)的用法的更多相关文章
- iOS 搜索条使用详解
在ios开发中搜索条的使用挺常见的,不过之前一直没用到也没细细研究,最近做外包项目的时候刚好用到,在这里记录一下使用的过程,只要理解了原理,其实还是比较简单的!上传的图片有点大,刚好可以看清楚它的使用 ...
- UI UISearchBar UISearchDisplayController实现搜索条、解析颜色
本文转载至 http://blog.sina.com.cn/s/blog_bf2d33bd01017q6l.html @interface ThirdViewController : UIViewCo ...
- 使用CSS3和jQuery可伸缩的搜索条
使用CSS3和jQuery可伸缩的搜索条 helloweba.com 作者:月光光 时间:2013-12-09 21:23 标签: CSS3 jquery 搜索条在我们网站是必不可少的,尤其是在有限的 ...
- 模仿京东顶部搜索条效果制作的一个小demo
最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 #define kScreenWidth [UIScreen mainScreen].bounds.s ...
- 一个漂亮的DIV搜索条
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【转】 Pro Android学习笔记(五十):ActionBar(3):搜索条
目录(?)[-] ActionBar中的搜索条 通过Menu item上定义search view 进行Searchable的配置 在activity中将search view关联searchable ...
- 20个Flutter实例视频教程-第10节: 一个不简单的搜索条-1
20个Flutter实例视频教程-第10节: 一个不简单的搜索条-1 视频地址: https://www.bilibili.com/video/av39709290/?p=10 博客地址: https ...
- Swift - 带结果列表的搜索条(UISearchDisplayController)的用法
(注:自iOS8起,苹果便废弃UISearchDisplayController的使用,改为使用UISearchController来实现类似功能,可参考我的另一篇文章“Swift - 使用UISea ...
- Swift - 进度条(UIProgressView)的用法
1,创建进度条 1 2 3 4 var progressView=UIProgressView(progressViewStyle:UIProgressViewStyle.Default) progr ...
随机推荐
- sql基础,必须会的————随便整理、杂乱无章
1.sqlserver2008r2的安装 2.数据库与表的建立.增加.删除.修改. 3,索引的概念,包括聚集与非聚集的区别.全文索引的建立与如何使用全文索引. 4,重新生成索引,重新组织索引. 5,建 ...
- C# 课堂总结5-数组
一. 数组:解决同一类大量数据在内存存储和运算的功能. 1.一维数组定义:制定类型,指定长度,指定名称.int[] a=new int[5]int[] a=new int[5]{23,23,23,1, ...
- java Native 方法
一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非j ...
- 从头学Qt Quick系列
http://www.cnblogs.com/csulennon/category/686605.html
- C/C++取出变量的每一位的值(第一次知道还有QBitArray)
前写程序最多也只是字节级别操作,用char和memcpy进行一系列内存操作.此次一个sdk,其状态值直接是每位一个标示,所以需要取出每位进行操作.当然CPP也有丰富的位运算操作,但是虽然也学过,知道意 ...
- Android 去掉Activity的跳转动画
startActivity或finish的时候调用一句话即可: overridePendingTransition(0, 0);
- 20款Notepad++插件下载和介绍
转自:http://www.kuqin.com/developtool/20090628/59334.html Notepad++从3.4版本开始支持插件机制,让用户可选择的为本身已经优秀的Notep ...
- 使用ssh远程执行命令批量导出数据库到本地(转)
前天正在跟前端的同事调试功能.服务器开好,模拟的玩家登录好,就在倒计时.这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据.好吧,我看了一下时间,1 ...
- Qt的setMouseTracking使用
bool mouseTracking 这个属性保存的是窗口部件跟踪鼠标是否生效. 如果鼠标跟踪失效(默认),当鼠标被移动的时候只有在至少一个鼠标按键被按下时,这个窗口部件才会接收鼠标移动事件. 如果鼠 ...
- Windows Azure 安全最佳实践 - 第 5 部分:基于Claim 的标识,单点登录
基于Claim的身份标识是处理网站与 Web 服务的身份认证和访问一种简单而强大的方式,无论您是在本地工作还是面向云工作.您可以通过减少自定义实施和使用基于Claim的单一简化标识模型,创建更安全的应 ...