在使用TableView和搜索栏时添加复选标记,可以通过以下步骤实现:
下面是一个示例代码:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var searchBar: UISearchBar!
var data = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"]
var filteredData = [String]()
var selectedRows = [Int]()
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
searchBar.delegate = self
}
// MARK: - TableView DataSource
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchBar.text?.isEmpty == false {
return filteredData.count
}
return data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
var item: String
if searchBar.text?.isEmpty == false {
item = filteredData[indexPath.row]
} else {
item = data[indexPath.row]
}
cell.textLabel?.text = item
if selectedRows.contains(indexPath.row) {
cell.accessoryType = .checkmark
} else {
cell.accessoryType = .none
}
return cell
}
// MARK: - TableView Delegate
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
if selectedRows.contains(indexPath.row) {
selectedRows.remove(at: selectedRows.firstIndex(of: indexPath.row)!)
} else {
selectedRows.append(indexPath.row)
}
tableView.reloadRows(at: [indexPath], with: .automatic)
}
// MARK: - SearchBar Delegate
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredData = data.filter({ $0.lowercased().contains(searchText.lowercased()) })
tableView.reloadData()
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
searchBar.text = ""
filteredData.removeAll()
tableView.reloadData()
}
}
这个示例代码演示了如何在使用TableView和搜索栏时添加复选标记。你可以根据自己的需求进行修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云