How to select CollectionView cell in RxSwift

Mehreen picture Mehreen · Apr 10, 2017 · Viewed 7.5k times · Source

I need to select the item at specific index in collection view using RxSwift.This method is not working fine.

 collectionView.rx.modelSelected(SearchResult.self).subscribe(onNext:{ menuItem in }).addDisposableTo(disposeBag) 

Can anybody help?

Answer

mojtaba al moussawi picture mojtaba al moussawi · Aug 13, 2018

If you want the indexPath of item selected you can use the following :

collectionView
    .rx
    .itemSelected
        .subscribe(onNext:{ indexPath in
            //your code
        }).disposed(by: disposeBag)

and if you want to the model being selected :

collectionView
        .rx
        .modelSelected(SearchResult.self)
        .subscribe(onNext: { (model) in
            //Your code
        }).disposed(by: disposeBag)

And you can combine the above, to get the modelSelected with their indexPath as follow:

  Observable
            .zip(
                collectionView
                    .rx
                    .itemSelected
                ,collectionView
                    .rx
                    .modelSelected(SearchResult.self)
            )
            .bind{ [unowned self] indexPath, model in

            }
            .disposed(by: disposeBag)
    }