【问题标题】:search bar controller in swift快速搜索栏控制器
【发布时间】:2017-07-24 18:57:29
【问题描述】:

我是快速编程的新手

tableview 标题中的搜索栏控制器。我可以手动输入搜索名称,但在我的情况下,我必须在搜索栏控制器中输入名称并显示学生的姓名。搜索栏控制器使用过滤器选项获取搜索到的文本。

这是代码

 let searchController = UISearchController(searchResultsController: nil)

      override func viewDidLoad() {
            searchController.searchResultsUpdater = self
            searchController.hidesNavigationBarDuringPresentation = false
            searchController.dimsBackgroundDuringPresentation = false
            tableView.tableHeaderView = searchController.searchBar
            searchController.delegate = self
            self.searchController.searchBar.delegate = self
    }

    func updateSearchResults(for searchController: UISearchController) {

        _ = kidsData
        let searchToSearch = "Savitha"

        if(searchToSearch == ""){
           self.kidsData = self.KidsDataDuplicate
        } else{
            self.kidsData.removeAll()

            let itemsarray = self.KidsDataDuplicate

            var forkidsinArray = [String]()

        for Kids in itemsarray {
            forkidsinArray.append(Kids.name)
            if(Kids.name.range(of: searchToSearch, options: .caseInsensitive) != nil){
                self.kidsData.append(Kids)
            }
        }
            self.tableView.reloadData()
        }
    }

使用过滤器将文本带到搜索控制器

请帮帮我

【问题讨论】:

标签: ios swift swift3 uisearchbar


【解决方案1】:

根据问题,我相信您正在正确执行搜索,但您希望获取在 searchBar 中输入的单词/文本来执行搜索。 我们将使用UISearchBarControllersearchBar.text属性获取在searchBar中输入的文本

试试

let searchToSearch = searchController.searchBar.text

【讨论】:

    【解决方案2】:

    你可以使用 UISearchBar 的 shouldChangeTextIn Delegate 方法。

      func searchBar(_ searchBar: UISearchBar, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    
        let newCharLength = (searchBar.text ?? "").characters.count + text.characters.count - range.length
    
        if newCharLength.count > 0 {
    
            arrSearchFilter = arrNames.filter { (str) -> Bool in
                        return (str.lowercased().contains((searchBar.text?.lowercased())!))!
                    }
    
                 if arrSearchLocalityModel.count > 0 {
                        arrSearchLocality = arrSearchLocalityModel
                    } else {
                        arrSearchLocality = arrLocalityModel
                    }
    
              self.tableView.reloadData()
    
            }
    
    
        }
    

    【讨论】:

      猜你喜欢
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 2020-10-08
      • 1970-01-01
      相关资源
      最近更新 更多