如何使用 UISearchBar 搜索文本和图片
how to use UISearchBar to search text and images
imageData = [UIImage (named: "Burger Point")!,
UIImage (named: "Eating Point")!,
UIImage (named: "Food Garage")!,
UIImage (named: "Food Masters")!,
UIImage (named: "Food Plaza")!,
UIImage (named: "Masala Junction 71")!,
UIImage (named: "Samosa Express")!,
UIImage (named: "Transform Diet")!,
UIImage (named: "Urban Pind")!]
这是我的图像数组,名称数组与图像数组相同。现在我想将过滤后的图像存储到 filterImages 数组,但我不知道如何完成它
我在 searchBar 委托中做了一些事情,但它给我错误
// SearchBar Text and Image filtering
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchBar.text == nil || searchBar.text == "" {
isSearching = false
view.endEditing(true)
searchTableView.reloadData()
}
else {
isSearching = true
filteredData = receivedData.filter({ (text) -> Bool in
let tmp: NSString = text as NSString
let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
return range.location != NSNotFound
})
filteredImage = imageData.filter({ (text) -> Bool in
let tmp : UIImage = text as NSString
let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
return range.location != NSNotFound
})
searchTableView.reloadData()
}
}
根据你的问题,我了解到你的资产中有类似于图像的字符串数据,当用户搜索开始时需要将搜索结果映射到图像
这里是解决方案
let receivedData = ["Burger Point","Eating Point","Food Garage","Food Masters","Food Plaza"]
let searchText = "Bur"
let filteredImage = receivedData.filter {[=10=].lowercased().contains(searchText.lowercased())}.map { UIImage.init(named: [=10=])}
print(filteredImage.count)
应用到您的搜索功能
// SearchBar Text and Image filtering
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if !searchBar.text.isEmpty{
let filteredImage = receivedData.filter {[=11=].lowercased().contains(searchText.lowercased())}.map { UIImage.init(named: [=11=])}
isSearching = !filteredImage.isEmpty
searchTableView.reloadData()
}
}
imageData = [UIImage (named: "Burger Point")!,
UIImage (named: "Eating Point")!,
UIImage (named: "Food Garage")!,
UIImage (named: "Food Masters")!,
UIImage (named: "Food Plaza")!,
UIImage (named: "Masala Junction 71")!,
UIImage (named: "Samosa Express")!,
UIImage (named: "Transform Diet")!,
UIImage (named: "Urban Pind")!]
这是我的图像数组,名称数组与图像数组相同。现在我想将过滤后的图像存储到 filterImages 数组,但我不知道如何完成它 我在 searchBar 委托中做了一些事情,但它给我错误
// SearchBar Text and Image filtering
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchBar.text == nil || searchBar.text == "" {
isSearching = false
view.endEditing(true)
searchTableView.reloadData()
}
else {
isSearching = true
filteredData = receivedData.filter({ (text) -> Bool in
let tmp: NSString = text as NSString
let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
return range.location != NSNotFound
})
filteredImage = imageData.filter({ (text) -> Bool in
let tmp : UIImage = text as NSString
let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
return range.location != NSNotFound
})
searchTableView.reloadData()
}
}
根据你的问题,我了解到你的资产中有类似于图像的字符串数据,当用户搜索开始时需要将搜索结果映射到图像
这里是解决方案
let receivedData = ["Burger Point","Eating Point","Food Garage","Food Masters","Food Plaza"]
let searchText = "Bur"
let filteredImage = receivedData.filter {[=10=].lowercased().contains(searchText.lowercased())}.map { UIImage.init(named: [=10=])}
print(filteredImage.count)
应用到您的搜索功能
// SearchBar Text and Image filtering
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if !searchBar.text.isEmpty{
let filteredImage = receivedData.filter {[=11=].lowercased().contains(searchText.lowercased())}.map { UIImage.init(named: [=11=])}
isSearching = !filteredImage.isEmpty
searchTableView.reloadData()
}
}