走进响应式编程
接下来我会通过代码来记录,别担心我会做好注释的。
·
·
·
·
·
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