ลองใช้ RxSwift ร่วมกับ TableView ไม่ได้ยากอย่างที่คิด แถมชีวิตง่ายขึ้น
ในบทความนี้ หยิบ TableView มาเป็นตัวอย่างให้ดู เพื่อให้เห็นความแตกต่างอย่างชัดเจน ระหว่าง TableView แบบปกติ และแบบ RxSwift
ถ้าพูดถึง TableView แล้ว การสร้างจะต้องทำยังไงบ้าง iOS Developer ทุกคนมีคำตอบอยู่ในใจ
- สร้าง dataSource ให้กับ UITableView
- numberOfItemsInSection
- cellForRowAtIndexPath
- cast UITableViewCell
- set dataSource ให้กับ UITableView
ในบทความนี้จะลองสร้าง TableView จาก RxSwift ให้ดูเป็นตัวอย่างครับ
ผมสร้าง Model ของ Person ขึ้นมา และทำการสร้าง array ของ Person เพื่อเตรียมนำไปแสดงใน TableView
จากนั้นก็ทำการสร้าง Observable ของ array ของ Person ( Observable<[Person]>) ขึ้นมาจาก array ของ Person ( [Person] )
และทำการ bind เข้ากับ items ของ tableView จะได้รับ callback กลับมา 3 ค่า คือ
(row, element, cell) in ...
แต่เข้า method tableView.rx.items นั้น return Disposable ออกมาจึงนำ disposeBag มารับ Disposable นั้นเพื่อนำไปจัดการต่อไป
นอกจากนี้ ยังสามารถใช้แทน didSelectItemAtIndexPath ใน UITableViewDelegate และใช้งานร่วมกับ UIKit อื่น ๆ ได้อีกมากมาย
สามารถดู source demo ได้ที่ https://github.com/Dekablade01/DemoTableView-RxSwift/tree/master