swift 搜索框(UISearchBar)实现简单的搜索功能(swift3)
2016-11-11 10:33
375 查看
原文:http://www.jianshu.com/p/ef140dfb6825
本文在原文的基础上,实现swift3.0
1.在storyboard里面拖入一个 Search Bar 和 一个 tableView。
import UIKit
class ViewController: UIViewController,UISearchBarDelegate,UITableViewDelegate,UITableViewDataSource{
@IBOutlet weak var searchBar: UISearchBar!
@IBOutlet weak var tableView: UITableView!
let array = ["beijing", "shanghai","guangzhou","shenzhen" ,"changsha","wuhan","tianjing","hangzhou"]
var result = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// 搜索内容为空时,显示全部内容
self.result = self.array
self.searchBar.delegate = self
self.tableView.delegate = self
self.tableView.dataSource = self
self.searchBar.placeholder = "搜索"
// 注册tableviewCell
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
print("[ViewController searchBar] searchText: \(searchText)")
// 没有搜索内容时显示全部内容
if searchText == "" {
self.result = self.array
} else {
// 匹配用户输入的前缀,不区分大小写
self.result = []
for arr in self.array {
if arr.lowercased().hasPrefix(searchText.lowercased()) {
self.result.append(arr)
}
}
}
// 刷新tableView 数据显示
self.tableView.reloadData()
}
// 搜索触发事件,点击虚拟键盘上的search按钮时触发此方法
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchBar.resignFirstResponder()
}
// 书签按钮触发事件
func searchBarBookmarkButtonClicked(_ searchBar: UISearchBar) {
print("搜索历史")
}
// 取消按钮触发事件
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
// 搜索内容置空
searchBar.text = ""
self.result = self.array
self.tableView.reloadData()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.result.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identify: String = "cell"
let cell = tableView.dequeueReusableCell(withIdentifier: identify, for: indexPath) as UITableViewCell
cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator
cell.textLabel?.text = self.result[indexPath.row]
return cell
}
func searchBarSearchButtonClicked() {
print("7 searchBarSearchButtonClicked")
searchBar.endEditing(true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
本文在原文的基础上,实现swift3.0
1.在storyboard里面拖入一个 Search Bar 和 一个 tableView。
import UIKit
class ViewController: UIViewController,UISearchBarDelegate,UITableViewDelegate,UITableViewDataSource{
@IBOutlet weak var searchBar: UISearchBar!
@IBOutlet weak var tableView: UITableView!
let array = ["beijing", "shanghai","guangzhou","shenzhen" ,"changsha","wuhan","tianjing","hangzhou"]
var result = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// 搜索内容为空时,显示全部内容
self.result = self.array
self.searchBar.delegate = self
self.tableView.delegate = self
self.tableView.dataSource = self
self.searchBar.placeholder = "搜索"
// 注册tableviewCell
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
print("[ViewController searchBar] searchText: \(searchText)")
// 没有搜索内容时显示全部内容
if searchText == "" {
self.result = self.array
} else {
// 匹配用户输入的前缀,不区分大小写
self.result = []
for arr in self.array {
if arr.lowercased().hasPrefix(searchText.lowercased()) {
self.result.append(arr)
}
}
}
// 刷新tableView 数据显示
self.tableView.reloadData()
}
// 搜索触发事件,点击虚拟键盘上的search按钮时触发此方法
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
searchBar.resignFirstResponder()
}
// 书签按钮触发事件
func searchBarBookmarkButtonClicked(_ searchBar: UISearchBar) {
print("搜索历史")
}
// 取消按钮触发事件
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
// 搜索内容置空
searchBar.text = ""
self.result = self.array
self.tableView.reloadData()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.result.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let identify: String = "cell"
let cell = tableView.dequeueReusableCell(withIdentifier: identify, for: indexPath) as UITableViewCell
cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator
cell.textLabel?.text = self.result[indexPath.row]
return cell
}
func searchBarSearchButtonClicked() {
print("7 searchBarSearchButtonClicked")
searchBar.endEditing(true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
相关文章推荐
- swift 搜索框(UISearchBar)实现简单的搜索功能
- UISearchBar, NSPredicate 实现简单的搜索功能
- 快捷搜索框(UISearchBar)简单实现 swift
- 纯代码实现UISearchBar搜索功能
- UITableView + UISearchBar 实现搜索功能
- java简单的实现搜索框的下拉显示相关搜索功能
- iOS UISearchController TableView 实现简单搜索功能
- Android自定义搜索框(EditText)的搜索功能实现,过滤ListView
- PHP 实现简单搜索功能
- 如何实现简单的自动提示(autocomplete)填充搜索功能java代码。
- 简单三步-实现dede站内搜索功能
- iOS tableview 实现简单的搜索功能
- iOS开发 - UISearchController实现搜索功能
- UI_UISearchController实现搜索功能
- 不用UIsearchController实现搜索功能
- Swift - 搜索条(UISearchBar)的用法
- IOS中UISearchController搜索框筛选功能实现
- 使用jQuery简单实现模拟浏览器搜索功能
- iOS tableview 实现简单的搜索功能
- UISearchBar和UITableView实现简单的模糊查询