ลองใช้ RxSwift ร่วมกับ TableView ไม่ได้ยากอย่างที่คิด แถมชีวิตง่ายขึ้น

Issarapong Poesua
SwiftLover
Published in
1 min readJul 8, 2017

ในบทความนี้ หยิบ TableView มาเป็นตัวอย่างให้ดู เพื่อให้เห็นความแตกต่างอย่างชัดเจน ระหว่าง TableView แบบปกติ และแบบ RxSwift

ถ้าพูดถึง TableView แล้ว การสร้างจะต้องทำยังไงบ้าง iOS Developer ทุกคนมีคำตอบอยู่ในใจ

  1. สร้าง dataSource ให้กับ UITableView
  2. numberOfItemsInSection
  3. cellForRowAtIndexPath
  4. cast UITableViewCell
  5. 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

--

--