0

I am implementing tableview using rxswift.

But the tableviewcell is not created.

Below is my tableview code.

ViewController

let customTableView: UITableView = {
    let tableView = UITableView()
    tableView.register(CustomCell.self, forCellReuseIdentifier: CustomCell.CellId)
    tableView.backgroundColor = .red
    return tableView
}()
   
func setLayout() {
    self.view.addSubview(customTableView)        
    customTableView.snp.makeConstraints {
        $0.top.equalTo(givenLabel.snp.bottom).offset(10)
        $0.leading.equalTo(0)
        $0.height.equalTo(300)
        $0.width.equalTo(self.view.snp.width)
    }
}

func setRx() {
    viewModel.itemObservable
        .bind(to: customTableView.rx.items(cellIdentifier: CustomCell.CellId, cellType: CustomCell.self)) { indexPath, item, cell in
            cell.cellImage.image = UIImage.init(systemName: item)
        }
        .disposed(by: disposeBag)
    self.customTableView.reloadData()
}

ViewModel

var itemObservable = Observable.of([UIImage.init(systemName: "person")!,
                                    UIImage.init(systemName: "person")!,
                                    UIImage.init(systemName: "person")!,
                                    UIImage.init(systemName: "person")!])

What am I missing?

Any help would be appreciated.

MojitoBar
  • 13
  • 3
  • You are mixing rx with delegate method. You DON'T need to reloadData when having a reactive implementation; are you calling setRx method? – George May 18 '22 at 18:09
  • Put a breakpoint on the line `cell.cellImage.image = UIImage.init(systemName: item)` is it getting called? – Daniel T. May 18 '22 at 22:31
  • i calling setRx() in `viewDidLoad()` and isn't getting call breakpoint on the line`cell.cellImage.image = UIImage.init(systemName: item)` thanks @George @Daniel T. – MojitoBar May 19 '22 at 00:12
  • i'm answer myself. it was dispose problem. I used disposebag wrong. So the value is emitted, but the stream is cut off right away. Thanks – MojitoBar May 19 '22 at 01:39

0 Answers0