在使用Swift在表视图中搜索多个数据时,可以按照以下步骤进行:
dataArray
。searchResultsArray
。UISearchBarDelegate
协议,并在搜索栏的代理方法中处理搜索逻辑。class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var searchBar: UISearchBar!
var dataArray = ["Apple", "Banana", "Orange", "Mango", "Grapes"]
var searchResultsArray = [String]()
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
searchBar.delegate = self
}
// MARK: - UITableViewDataSource
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchBar.text != "" {
return searchResultsArray.count
} else {
return dataArray.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
if searchBar.text != "" {
cell.textLabel?.text = searchResultsArray[indexPath.row]
} else {
cell.textLabel?.text = dataArray[indexPath.row]
}
return cell
}
// MARK: - UISearchBarDelegate
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchResultsArray = dataArray.filter({ $0.lowercased().contains(searchText.lowercased()) })
tableView.reloadData()
}
}
上述代码中,dataArray
是用于存储所有数据的数组,searchResultsArray
是用于存储搜索结果的数组。在tableView(_:numberOfRowsInSection:)
方法中,根据搜索栏的文本内容判断返回的行数。在tableView(_:cellForRowAt:)
方法中,根据搜索栏的文本内容显示对应的数据。
在searchBar(_:textDidChange:)
方法中,通过使用filter
方法对dataArray
进行筛选,将包含搜索文本的数据存储到searchResultsArray
中,并调用tableView.reloadData()
刷新表视图。
这样,当用户在搜索栏中输入文本时,表视图会根据输入的文本动态显示搜索结果。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。您可以在腾讯云官网了解更多关于这些产品的详细信息和使用方式。
腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
领取专属 10元无门槛券
手把手带您无忧上云