美文网首页RXswiftRxSwift学习Swift学习
【RxSwift系列】RXSwift在UITableView中使

【RxSwift系列】RXSwift在UITableView中使

作者: yuanweiphone | 来源:发表于2017-07-21 16:59 被阅读854次

1、RootViewController

let disposeBag = DisposeBag()
let dataSource = RxTableViewSectionedReloadDataSource<SectionModel<String,RootModel>>()
let viewModel = RootViewModel()

//绑定数据
viewModel.getNewsData().bind(to: tableView.rx.items(dataSource: dataSource))
        .disposed(by: disposeBag)

//设置cell
dataSource.configureCell = {
        _, tableView, indexPath, model in
        let cell = RootTableViewCell(style: .default, reuseIdentifier: "cell")
        //处理返回数据
        cell.model = model
        return cell
    }

//cell点击事件
tableView.rx.itemSelected.map { indexPath in
        return (indexPath,self.dataSource[indexPath])
    }
    .subscribe(onNext: { indexPath, model in
        self.navigationController?.pushViewController(FirstViewController(), animated: true)
    })
    .disposed(by: disposeBag)

或者用

tableView.rx
        .modelSelected(FirstModel.self)
        .subscribe(onNext: { (model) in
            self.navigationController?.pushViewController(FirstViewController(), animated: true)
        })
        .addDisposableTo(disposeBag)

2、RootViewModel

func getNewsData() -> Observable<[SectionModel<String, RootModel>]> {
    return Observable.create{ (observer) -> Disposable in
        
        let array = [RootModel(name: "111", age: 10),  RootModel(name: "222", age: 20), RootModel(name: "333", age: 30)]

        let section = [SectionModel(model: "", items: array)]
        observer.onNext(section)
        observer.onCompleted()

        return Disposables.create()
    }
}

3、RootModel

struct RootModel {
    let name: String
    let age: Int
}

4、RootTableViewCell

var model: RootModel? {
    didSet {
            nameLabel.text = model.name
            ageLabel.text = model.age
        }
 }

【RxSwift系列】Moya + RXSwift + HandyJSON在UITableView中的使用(二)http://www.jianshu.com/p/fe36da1267cd
【RxSwift系列】RxSwift下基于MJRefresh实现下拉刷新,上拉加载(三)http://www.jianshu.com/p/6f14d6a7cb96

相关文章

网友评论

  • 小莫_09c4:let dataSource = RxTableViewSectionedReloadDataSource<SectionModel<String,User>>()
    报错 Missing argument for parameter 'configureCell' in call
    yuanweiphone:@虚拟不忘 应该是绑定的数据类型不对
    1e23cc3f1fef:let models: HLSectionModel = HLSectionModel(items: [HLItemModel(itemTitle: "天空1号", itemName: ""), HLItemModel(itemTitle: "天空2号", itemName: ""), HLItemModel(itemTitle: "天空3号", itemName: "")])

    Observable.just(models).asObservable().bind(to: tableView.rx.items(dataSource: dataSource)).disposed(by: disposeBag) 大神这个地方tableView.rx.items(dataSource: dataSource)报错Generic parameter 'Self' could not be inferred不知道啥原因,能指点一下吗:pray:
    yuanweiphone:需要导入RxCocoa,这个是处理tableview的
    import RxSwift
    import RxCocoa

本文标题:【RxSwift系列】RXSwift在UITableView中使

本文链接:https://www.haomeiwen.com/subject/bzyekxtx.html