Невозможно установить привязку (к: UITableView) с переменной RxSwift asObservable()

Я пытаюсь привязать (к:) collectionView, но tableView тоже не работает. У меня есть viewModel, где находится моя переменная<[]>, и я хочу подписаться, когда значение изменяется, с моим tableView.

viewModel.theVariable
        .asObservable()
        .bind(to: tableView.rx.items(cellIdentifier: "Cell", cellType: UITableViewCell.self)){
            (row, item, cell) in
            cell.textLabel?.text = item
        }
        .addDisposableTo(disposeBag)

XCode говорит мне Type 'inout UITableView' does not conform to protocol 'ReactiveCompatible' что должно быть, так как это применимо к любому UIView.

Я пробовал Observable с помощью just(), и этот подход, похоже, работал правильно. Дело в том, что мне нужно иметь переменную, которую я устанавливаю в viewModel, а в представлении мне нужно наблюдать за этим изменением. Не уверен, что Observable обслуживает этот метод.

Дело в том, что это должно работать даже с переменной? Это ошибка? Я использую Swift 3.2

2 ответа

Решение

Вот пример рабочего кода:

    var dataSource : PublishSubject<[String]> = PublishSubject()

    dataSource.asObservable().bind(to: self.mProductsCollectionView.rx.items) { (collectionView, row, element ) in
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "reuseIdentifier", for: IndexPath(row : row, section : 0))
        //customize cell
        return cell

    }.addDisposableTo(bag)

    publish.onNext(["blah", "blah", "blah"])

Вот рабочий код в Swift 3

 var countries = Variable([Country]())
 countries.asObservable()
  .bind(to: tblRx.rx.items(cellIdentifier: "RxCell", cellType: RxCell.self)) { (row, element, cell) in
            //customise cell here
        }
     .disposed(by: disposeBag)
Другие вопросы по тегам