Je lie la tableview avec deux différentes sources de données comme une avec le résultat réel et un autre tableau avec après avoir cliqué sur le filtre du bouton d'étendueRxSwift crash "Peut-être délégué était déjà défini dans xib ou storyboard et maintenant il est écrasé dans le code."
func bind() {
self.searchBar.rx.searchButtonClicked
.throttle(0.3, scheduler: MainScheduler.instance)
.flatMapLatest { [weak self] _ -> Observable<[String]> in
guard let `self` = self else { return .just([]) }
guard let query = self.searchBar.text else { return .just([]) }
self.view.endEditing(true)
self.loadingText.isHidden = false
let items = self.githubService.search(query: query)
self.githubService.searchItems = items
return items
}
.bind(to: self.tableView.rx.items(cellIdentifier: "cell")) { row, name, cell in
self.loadingText.isHidden = true
cell.textLabel?.text = name
}
.disposed(by: self.disposeBag)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.tableView.frame = self.view.bounds
}
}
func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
//filterContentForSearchText(searchBar.text!, scope: searchBar.scopeButtonTitles![selectedScope])
let filteredResult = self.githubService.filteredSearch(index: selectedScope)
filteredResult
.bind(to: self.tableView.rx.items(cellIdentifier: "cell")) { row, name, cell in // Getting crash here
self.loadingText.isHidden = true
cell.textLabel?.text = name
}
.disposed(by: self.disposeBag)
}
Ceci est la méthode que je l'utilise pour le filtre.
func filteredSearch(index:Int) -> Observable<[String]> {
guard index > 0 else { return .just([]) }
return searchItems!.filter { $0.contains("a")}
}