美文网首页
RxSwift点滴

RxSwift点滴

作者: MMD_ | 来源:发表于2018-09-07 10:46 被阅读13次
走进响应式编程

接下来我会通过代码来记录,别担心我会做好注释的。
·
·
·
·
·

import UIKit
import RxSwift
import RxCocoa

struct Music {
    let name: String
    let singer: String
    
    init(name: String, singer: String) {
        self.name = name
        self.singer = singer
    }
}

//实现 CustomStringConvertible 协议,方便输出调试
extension Music: CustomStringConvertible {
    var description: String {
        return "name: \(name) singer"
    }
}

// 数据源
struct MusicListViewModel {
    let data = Observable.just([
        Music(name: "孤独她呀", singer: "二柯"),
        Music(name: "孤独她呀", singer: "二柯"),
        Music(name: "孤独她呀", singer: "二柯"),
        Music(name: "孤独她呀", singer: "二柯")
        ])
}

class ViewController: UIViewController {

    let tableNode = UITableView()
    let viewModel = MusicListViewModel()
    let disposeBag = DisposeBag()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        tableNode.register(UITableViewCell.classForCoder(), forCellReuseIdentifier: "cell")
        tableNode.frame = self.view.frame;
        self.view.addSubview(tableNode)
        
        viewModel.data.bind(to: tableNode.rx.items(cellIdentifier: "cell")) {_, music, cell in
            cell.textLabel?.text = music.name
            cell.detailTextLabel?.text = music.singer
        }.disposed(by: disposeBag)
        
        tableNode.rx.modelSelected(Music.self).subscribe(onNext: { music in
            print("select \(music)")
        }).disposed(by: disposeBag)
    }
}

IMG_0361.PNG

相关文章

网友评论

      本文标题:RxSwift点滴

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