RxDataSources与TableView实现界面展示(一)


//  ViewController.swift
//  RxSwiftTest
//
//  Created by travey on 2018/11/5.
//  Copyright © 2018年 ZhouShijie. All rights reserved.


import UIKit
import RxSwift
import RxCocoa
import SnapKit
import RxDataSources

    class ViewController: UIViewController {

        let disposeBag = DisposeBag()
        var tableView: UITableView!
        
        override func viewDidLoad() {
            
            tableView = UITableView(frame: view.frame, style: .plain)
            tableView!.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
            view.addSubview(tableView)
            
            // 创建流
            let items = Observable.just([
                SectionModel(model: "我喜欢的语言", items: [
                    "C++",
                    "C",
                    "Swift",
                    "Go",
                    "Java"]),
                SectionModel(model: "我讨厌的语言", items: [
                    "Objective-C",
                    "C#",
                    ])
                ])
            
            let dataSource = RxTableViewSectionedReloadDataSource<SectionModel<String, String>>(configureCell:{ dataSource, tv, indexPath, element in
                let cell = tv.dequeueReusableCell(withIdentifier: "cell")
                cell?.textLabel?.text = "\(indexPath.row): \(element)"
                return cell!
            })
            
            // 设置分区的头标题,titleForHeaderInSection是一个函数,输入是TableViewSectionedDataSource类型,Int,输出是一个字符串,因此等号右边是一个闭包
            dataSource.titleForHeaderInSection = {
                ds, index in
                return ds.sectionModels[index].model
            }
            
            items.bind(to: tableView.rx.items(dataSource: dataSource)).disposed(by: disposeBag)
        }
    }


猜你喜欢

转载自blog.csdn.net/shijie97/article/details/83790772