[:en]Swift: Search Bar[:]

[:en]Swift search feature:

It’s easy to search any data among a vast amount of data by using swfit search feature:

//
//  ViewController.swift
//  search
//
//  Created by Cambridge  on 7/4/2019.
//  Copyright © 2019 Cambridge . All rights reserved.
//

import UIKit

// Search Step 2
class ViewController: UITableViewController, UISearchResultsUpdating {
    
    let searchController = UISearchController(searchResultsController: nil)
    var alldata = ["fish", "tree", "monkey", "three", "see", "sea"]
    var filteredData = [String]()
    var inSearchMode = false
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Search Step 3
        filteredData = alldata
        
        searchController.searchResultsUpdater = self
        searchController.dimsBackgroundDuringPresentation = false
        definesPresentationContext = true
        tableView.tableHeaderView = searchController.searchBar
        
        self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
        
    }
    
   
    
    // Search Step 4
    func updateSearchResults(for searchController: UISearchController) {
        // If we haven't typed anything into the search bar then do not filter the results
        if searchController.searchBar.text! == "" {
            filteredData = alldata
        } else {
            // Filter the results
            filteredData = alldata.filter { $0.lowercased().contains(searchController.searchBar.text!.lowercased()) }
        }
        self.tableView.reloadData()
    }
    
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.filteredData.count
    }
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell     {
        let cell: UITableViewCell = UITableViewCell(style: UITableViewCell.CellStyle.subtitle, reuseIdentifier: "cell")
        
        cell.textLabel?.text = self.filteredData[indexPath.row]
        cell.detailTextLabel?.text = self.filteredData[indexPath.row] // subtitle of tableview
        
        return cell
    }
    
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        print("Row +++++ \(indexPath.row) selected")
        let currentCell = tableView.cellForRow(at: indexPath)! as UITableViewCell
        if let cellselected : String = currentCell.textLabel!.text{
            print("cell selected:\(cellselected)")
        }
        }
    }



[:]

Print Friendly, PDF & Email
Scroll to Top