2017-08-29 1 views
0

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")} 
} 

Répondre

0

l'erreur est assez explicite, vous ne pouvez pas avoir 2 différentes sources de données. Mais vous pouvez changer le contenu de votre datSource entre 2 ensembles de données

Je vous conseille d'utiliser RxDataSources