美文网首页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:@虚拟不忘 应该是绑定的数据类型不对
        虚拟不忘: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