Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class MyViewController: UIViewController,UITableViewDataSource,UITableViewDelegate,UISearchBarDelegate {
- @IBOutlet weak var tableView: UITableView!
- @IBOutlet weak var searchBar: UISearchBar!
- var filteredArray = [String]()
- var shouldShowSearchResults = false
- var nameArray = [String]()
- var emailArray = [String]()
- var tableData = [String]()
- override func viewDidLoad() {
- super.viewDidLoad()
- downloadData()
- createSearchBar()
- // Do any additional setup after loading the view.
- }
- func createSearchBar(){
- searchBar.showsCancelButton = false
- searchBar.placeholder = "Enter your search"
- searchBar.delegate = self
- self.navigationItem.titleView = searchBar
- }
- func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- tableData = nameArray
- if shouldShowSearchResults
- {
- return filteredArray.count
- }
- else
- {
- return tableData.count
- }
- }
- func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell:mycell! = tableView.dequeueReusableCell(withIdentifier: "cell") as! mycell
- if shouldShowSearchResults
- {
- cell.name.text = filteredArray[indexPath.row]
- cell.email.text = emailArray[indexPath.row]
- return cell
- }
- else
- {
- cell.name.text = tableData[indexPath.row]
- cell.email.text = emailArray[indexPath.row]
- return cell
- }
- }
- func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
- searchBar.endEditing(true)
- }
- func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
- shouldShowSearchResults = true
- searchBar.endEditing(true)
- self.tableView.reloadData()
- }
- func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
- filteredArray = tableData.filter({
- (names:String) -> Bool in
- return names.lowercased().range(of: searchText.lowercased()) != nil
- })
- if searchText != ""
- {
- shouldShowSearchResults = true
- self.tableView.reloadData()
- }
- else
- {
- shouldShowSearchResults = false
- self.tableView.reloadData()
- }
- }
- func downloadData()
- {
- let url = URL(string: "http://www.json-generator.com/api/json/get/crdvbKvLoy?indent=2")!
- var request = URLRequest(url: url, cachePolicy: .reloadIgnoringCacheData, timeoutInterval: 10000)
- URLSession.shared.dataTask(with: request) { (data, response, error) in
- if error != nil {
- print(error!)
- return
- }
- do {
- if let jsonData = try JSONSerialization.jsonObject(with:data!, options: []) as? [[String:AnyObject]] {
- print(jsonData)
- // Utility.SharedInstance.dict_UserDetails3 = jsonData as AnyObject
- for item in jsonData {
- if let name = item["Name"] as? AnyObject {
- self.nameArray.append(name as! String)
- }
- if let email = item["Email"] as? AnyObject{
- self.emailArray.append(email as! String)
- }
- DispatchQueue.main.async {
- self.tableView.reloadData()
- }
- }
- }
- } catch let error as NSError {
- print(error)
- }
- }.resume()
- }
- }
- output:
- search___________
- Name Email
- ----------------
- Wasim wasim@gmail.com
- Dravid dravid@gmail.com
- Kohli virat@gmail.com
- Kallis Jaques@gmail.com
- I entered in search text as K
- -----------------------------
- search_____K______
- Name Email
- ----------------
- Kohli wasim@gmail.com
- Kallis dravid@gmail.com
Add Comment
Please, Sign In to add comment