上下文:我正在Swift
构建一个主要由UITableView
组成的应用。每个单元由四个标签组成,每个标签的数据都来自核心数据。我已使用apple's tutorial作为tableview的基础,并this tutorial用于核心数据处理。我正在研究的最后一个功能是搜索,我正在努力。
问题:我遇到的问题是,大多数用于搜索tableviews的教程似乎都是围绕将搜索添加到作为UIViewController中的插座连接的tableview而构建的。我已经关注了苹果教程,所以我的tableview是在UITableViewController中设置的。我基本上坚持以下问题:如何在UITableViewController中实现一个搜索栏,根据主要标签(从核心数据中提取)过滤单元格?
答案 0 :(得分:0)
使用UITableViewController比常规UIViewController有点棘手。我建议现在切换,而重构仍然很容易。如果要继续使用UITableViewController,则需要调整表视图的大小以在搜索栏的顶部腾出空间。
这篇文章讨论了调整表格视图的大小:How to resize UITableView in UITableViewController with section header
将表视图放开后,您可以创建一个新视图并将其添加到搜索栏的屏幕顶部。
private var searchBarWrapperView: UIView!
private var _searchController: UISearchController!
override func viewDidAppear(_ animated: Bool) {
tableView.frame = CGRect(x: 0, y: 64, width: tableView.frame.width, height: tableView.frame.height - 64)
_searchController = UISearchController(searchResultsController: nil)
_searchController.dimsBackgroundDuringPresentation = false
_searchController.searchBar.delegate = self
_searchController.searchBar.sizeToFit()
searchBarWrapperView = UIView(frame: CGRect(x: 0, y: 30, width: tableView.frame.width, height: 44))
searchBarWrapperView.addSubview(_searchController.searchBar)
tableView.superview!.addSubview(searchBarWrapperView)
}
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
// filter the data for the search and then reload
tableView.reloadData()
}