Skip to content

UITableViewCell containing a UICollectionView  #19

@karta88821

Description

@karta88821

Now I'm want to put UICollectionView into UITableViewCell using RxRealmDataSources library, and I use MVVM+RxSwift model,I know that the general approach is to set the collectionview dataSource and delegate in the tableviewcell to the ViewController itself, and then implement its protocal, but I don't know how to set the datasource of the collectionView using RxRealmDataSources. Do I need to add parameters in the ViewModel or?

In the ViewModel

class ViewModel {

    // MARK: - Output

    let boxs: Observable<(AnyRealmCollection<RMBox>,RealmChangeset?)>
    let cases: Observable<(AnyRealmCollection<RMCase>,RealmChangeset?)>

    init() {
        let boxResults = realm.objects(RMBox.self).sorted(byKeyPath: "id", ascending: true)
        self.boxs = Observable.changeset(from: boxResults).share()

        let caseResults = realm.objects(RMCase.self).sorted(byKeyPath: "id", ascending: true)
        self.cases = Observable.changeset(from: caseResults).share()
    }

}

In the ViewController

class ViewController: UIViewController {

    // Setup tableview dataSourceSetup collectionView dataSource(inside the tableView)
    let tbDataSource = RxTableViewRealmDataSource<RMBox>(
    cellIdentifier: CellId.main.rawValue, cellType: MainTableViewCell.self) {cell, ip, box in
        cell.setName(box.name)
        cell.collectionView.rx..... // How do I need to set for dataSource?
    }

       // Setup collectionView dataSource(inside the tableView)
       let clDataSource = RxCollectionViewRealmDataSource<RMCase>(
    cellIdentifier: CellId.main_collectionView.rawValue, cellType: MainCollectionViewCell.self) {cell, ip, _case in
        cell.setCaseName(_case.name)
    }


        override func viewDidLoad() {
        super.viewDidLoad()

        // Bind realm Results to tableView
        viewModel.boxs
            .observeOn(MainScheduler.instance)
            .bind(to: tableView.rx.realmChanges(tbDataSource))
            .disposed(by: disposeBag)

       // Bind realm Results to collectionView(inside tableViewcell)
       viewModel.cases
            .observeOn(MainScheduler.instance)
            .......
    }

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions