我有一个View下面有一个searchBar和一个相应的TableView,我让它正常工作。我的问题是;是否可以将SearchBar连接到不同的TableView?我是swift和iOS开发的新手,无法找到完成它的方法。这张图片将有助于说明。如您所见,我有一个搜索表视图控制器,它与搜索栏正常工作。 我现在要做的是将SearchBar连接到第二个TableView 。我想这样做是因为我最终会有一个不会连接到SearchBar的TableView,但是当用户点击SearchBar时,新的TableView将覆盖原始的TableView。下面我将展示我的工作TableView的代码,再次我想将SearchBar连接到第二个
class SearchTableViewController: UITableViewController,UISearchBarDelegate {
@IBOutlet weak var searchBar: UISearchBar!
override func viewDidLoad() {
super.viewDidLoad()
searchBar.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
struct ApplicationData {
var items: [String]
var filteredItems: [String] = []
init() {
items = ["John","Sam","Oliver"]
filterData(search: "")
}
mutating func filterData(search: String)
{
if search.characters.count>0 {
filteredItems = items.filter({ (item) in
let value1 = item.lowercased()
let value2 = search.lowercased()
let valid = value1.hasPrefix(value2)
return valid
})
}
filteredItems.sort(by: { (value1,value2) in value1 < value2 })
}
}
var AppData = ApplicationData()
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String){
if let text = searchBar.text {
let search = text.trimmingCharacters(in: .whitespaces)
AppData.filterData(search: search)
tableView.reloadData()
}
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return AppData.filteredItems.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ZipSearch", for: indexPath)
let data = AppData.filteredItems[indexPath.row]
cell.textLabel?.text = data
return cell
}
}
我在想,也许 tableView.reloadData()代码默认为原始的tableView,但是非常感谢任何帮助。