走進響應式編程
接下來我會通過代碼來記錄,別擔心我會做好注釋的。
·
·
·
·
·
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
}
}
//實現(xiàn) CustomStringConvertible 協(xié)議,方便輸出調試
extension Music: CustomStringConvertible {
var description: String {
return "name: \(name) singer"
}
}
// 數(shù)據(jù)源
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