Reputation: 99
I'm using RxSwift for binding UITableView to data source. I want to select table cell in table view. Selection does not work by tap, but works well by swipe gesture. What could be the problem?
That's what I was truing to do:
Here my code
View Model
import Foundation
import RxSwift
class ViewModel {
let selectItem: AnyObserver<String>
let didSelectItem: Observable<String>
let items: Observable<[String]>
init() {
let _selectItem = PublishSubject<String>()
self.selectItem = _selectItem.asObserver()
self.didSelectItem = _selectItem.asObservable()
items = TestAppData.getData()
}
}
ViewController
import UIKit
import RxSwift
import RxCocoa
class ViewController: BaseViewController {
@IBOutlet weak var dataTableView: UITableView!
var viewModel: ViewModel!
override func viewDidLoad() {
super .viewDidLoad()
setup()
}
private func setup(){
viewModel.items
.observeOn(MainScheduler.instance)
.bind(to: dataTableView.rx.items(cellIdentifier: "DataCell", cellType: UITableViewCell.self)) {
(_, dataValue, cell) in
cell.textLabel?.text = dataValue
cell.selectionStyle = .none
}
.disposed(by: disposeBag)
dataTableView.rx.modelSelected(String.self)
.bind(to: viewModel.selectItem)
.disposed(by: disposeBag)
}
}
TableView and TableViewCell settings:
RxSwift 4.1.2, RxCocoa 4.1.2
Upvotes: 1
Views: 635
Reputation: 556
Try this implementation
dataTableView.rx.itemSelected
.subscribe(onNext: { [unowned self] indexPath in
//DO something with cell
}).disposed(by: disposeBag)
Upvotes: 0