<aside>
💡 RxSwift 의 요소들을 UIKit View 들에 extension 해서 접목시킨 것
UILabel 로 예시를 들었을 때,
label.rx.text 는 Binder 라는 타입이 있는데,
viewModel 의 Observable 에 bind 할 수 있음
기존에 아래처럼 사용하던 코드를
viewModel.itemsCount
.map { "\\($0)" }
.subscribe(onNext: { [weak self] in
self?.itemsCountLabel.text = $0
})
.disposed(by: disposeBag)
이와 같이 변경 가능
viewModel.itemsCount
.map { "\\($0)" }
**.bind(to: itemsCountLabel.rx.text)**
.disposed(by: disposeBag)
.bind 를 사용하면,
코드 양이 줄어들고,
[weak self] 를 사용하여 순환참조를 없애던 것을 따로 명시 없이 사용 가능
</aside>
UIKit View 들에 적용 가능하도록 만든 것이기 때문에 UITableView 에도 사용 가능
viewModel.menuObservable
.bind(to: tableView.rx.items(
cellIdentifier: cellId,
cellType: MenuItemTableViewCell.self)
) { index, item, cell in
// index 는 indexPath.row
// item 은 menuObservable 의 menu 하나
// cell 은 MenuItemTableViewCell 을 지정해 줌
cell.title.text = item.name
cell.price.text = "\\(item.price)"
cell.count.text = "\\(item.count)"
}
.disposed(by: disposeBag)