Gurjit Singh
Gurjit Singh

Reputation: 137

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")!]

This is my image array and the name array is same as image array. Now i want to store the filtered images to filterImages array but i didn't getting how to get it done i've done something in searchBar delegate but it is giving me error

// 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()
    }
}

Upvotes: 1

Views: 470

Answers (1)

Abdelahad Darwish
Abdelahad Darwish

Reputation: 6067

From your question i understand that you have string data is similar to image in your assets and need when user search start map search result to Image

here is solution

let receivedData = ["Burger Point","Eating Point","Food Garage","Food Masters","Food Plaza"]
    let searchText = "Bur"
    let filteredImage = receivedData.filter {$0.lowercased().contains(searchText.lowercased())}.map { UIImage.init(named: $0)}
    print(filteredImage.count)

Apply to your search Function

   // SearchBar Text and Image filtering
        func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

            if !searchBar.text.isEmpty{
                let filteredImage = receivedData.filter {$0.lowercased().contains(searchText.lowercased())}.map { UIImage.init(named: $0)}
     isSearching = !filteredImage.isEmpty
    searchTableView.reloadData()
            }
        }

Upvotes: 2

Related Questions