Swift3 在Swift 3中过滤UICollectionview上的结果不起作用?

Swift3 在Swift 3中过滤UICollectionview上的结果不起作用?,swift3,uicollectionview,uisearchcontroller,uisearchresultscontroller,Swift3,Uicollectionview,Uisearchcontroller,Uisearchresultscontroller,使用itemlist首次加载工作正常,但筛选后集合视图不会更新。我添加了搜索栏并尝试筛选结果,但UICollectionview未能更新视图 var resultSearchController = UISearchController() //itemlist var itemList = [item1, item2, item3, item4,..] //configured searchbar func viewDidLoad() { self.resultSearchC

使用itemlist首次加载工作正常,但筛选后集合视图不会更新。我添加了搜索栏并尝试筛选结果,但UICollectionview未能更新视图

var resultSearchController = UISearchController()
//itemlist
var itemList = [item1, item2, item3, item4,..] 

//configured searchbar

func viewDidLoad() {
      self.resultSearchController = UISearchController(searchResultsController: nil)
      self.resultSearchController.searchResultsUpdater = self
      self.resultSearchController.searchBar.delegate = self
      self.definesPresentationContext = true
      self.resultSearchController.dimsBackgroundDuringPresentation = false
      self.resultSearchController.searchBar.placeholder = "Search for Items"
      self.resultSearchController.searchBar.searchBarStyle = UISearchBarStyle.prominent
      self.resultSearchController.searchBar.sizeToFit()
}

override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
      if resultSearchController.isActive {
            return filterSearch.count
      }
      return itemList.count
      }

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
      var item = itemList()
      if resultSearchController.isActive {
            item = filterSearch[indexPath.row]
      } else {
            item = itemList[indexPath.row]
      }
      let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellIdentifier", for: indexPath)
      cell.titleLabel.text = item
      return cell
}
//将项目筛选到filterSearch中,但集合视图未根据筛选器进行更新

func updateSearchResults(for searchController: UISearchController) {
       filterSearch = itemList.filter { itemList  in
            return temList.name.lowercased().contains(searchText.lowercased())
      }
      self.collectionView?.reloadData()
}

检查代码中的以下更改

var resultSearchController = UISearchController()
//itemlist
var itemList = [item1, item2, item3, item4,..] 

//configured searchbar
var issearchactive:Bool = false

func viewDidLoad() {
      self.resultSearchController = UISearchController(searchResultsController: nil)
      self.resultSearchController.searchResultsUpdater = self
      self.resultSearchController.searchBar.delegate = self
      self.definesPresentationContext = true
      self.resultSearchController.dimsBackgroundDuringPresentation = false
      self.resultSearchController.searchBar.placeholder = "Search for Items"
      self.resultSearchController.searchBar.searchBarStyle = UISearchBarStyle.prominent
      self.resultSearchController.searchBar.sizeToFit()
}

override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
      if issearchactive {
            return filterSearch.count
      }
      return itemList.count
      }

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
      var item = itemList()
      if issearchactive {
            item = filterSearch[indexPath.row]
      } else {
            item = itemList[indexPath.row]
      }
      let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellIdentifier", for: indexPath)
      cell.titleLabel.text = item
      return cell
}

    func updateSearchResults(searchText:String) {
           filterSearch = itemList.filter { obj  in
                return obj.name.lowercased().contains(searchText.lowercased())
          }
          self.collectionView?.reloadData()
    }


  override func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {

        issearchactive = true
        return true
    }

  override func textFieldDidEndEditing(_ textField: UITextField) {

      updateSearchResults(searchText:textfield.text)

        issearchactive = false

         }

    override func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

  updateSearchResults(searchText:textfield.text)

        return true
    }

您能在代码中提供更多关于“storeList”的代码吗?通过调试,我看到searchcontroller虽然处于活动状态,但未显示为活动状态。你能告诉我我犯了什么错误吗?@phanisay你的代码看起来不错,但是你可以检查“resultSearchController.isActive”,当它在激活编辑resultSearchController时返回“true”。isActive返回“true”,但在编辑时返回false。你能解释一下吗@Phanisai刚刚更新了答案,看看变化