UISearchController iOS搜索控制器

导航栏里的搜索体验,用UISearchController搞定真的挺方便的。iOS 8 之后,Apple 就推荐用它来统一搜索功能,集成起来也不麻烦,几行代码搞定初始化,响应也快,界面还挺整洁。

UISearchController自带UISearchBar,还能配合你的table viewcollection view用,用户输入啥你就能实时过滤显示啥。想加点花样?样式自定义、搜索结果模糊背景、响应状态变化这些它都支持。

配置过程也简单,像这样:

let searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "输入关键词"
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false

再配合实现UISearchResultsUpdating协议:

extension YourViewController: UISearchResultsUpdating {
  func updateSearchResults(for searchController: UISearchController) {
    guard let searchText = searchController.searchBar.text else { return }
    // 过滤数据逻辑
    tableView.reloadData()
  }
}

哦对了,如果你的项目用CoreData,可以直接上NSPredicate搞定搜索逻辑。想搜索用户、文章、商品?都能用。

用的时候注意几点:搜索状态的切换记得监听一下,像willPresentSearchController(_:)didDismissSearchController(_:)这种,方便你做资源释放或者界面还原。

UISearchController算是个挺成熟的搜索方案。如果你现在还在单独用UISearchBar配合别的东西拼功能,不如试试它,一整套逻辑全给你包好了,省心不少。

zip
搜索框的使用.zip 预估大小:17个文件
folder
搜索框的使用 文件夹
file
.DS_Store 6KB
folder
搜索框的使用 文件夹
file
ViewController.m 3KB
file
Info.plist 1KB
file
main.m 342B
folder
Base.lproj 文件夹
file
Main.storyboard 2KB
file
LaunchScreen.xib 4KB
folder
Images.xcassets 文件夹
folder
AppIcon.appiconset 文件夹
file
Contents.json 1KB
file
ViewController.h 223B
file
AppDelegate.h 285B
file
AppDelegate.m 2KB
folder
搜索框的使用.xcodeproj 文件夹
folder
project.xcworkspace 文件夹
file
contents.xcworkspacedata 193B
folder
xcuserdata 文件夹
folder
jiangyun.xcuserdatad 文件夹
file
UserInterfaceState.xcuserstate 13KB
folder
xcuserdata 文件夹
folder
jiangyun.xcuserdatad 文件夹
folder
xcschemes 文件夹
file
xcschememanagement.plist 580B
file
搜索框的使用.xcscheme 5KB
file
project.pbxproj 16KB
folder
搜索框的使用Tests 文件夹
file
Info.plist 747B
file
______Tests.m 864B
zip 文件大小:30.01KB