この記事は
勉強会で発表した「画面遷移の管理とMVVM」の補足資料です。
https://speakerdeck.com/yoching/hua-mian-qian-yi-falseguan-li-tomvvm
参考資料
- Presentation Coordinators by Soroush Khanlou
- Boundaries in Practice by Nonaka Ayaka, try!Swift(2016)
-
Application Coordinatorを使ってぐちゃぐちゃになった遷移を綺麗に管理する
- こちらも参照されています
- "MVVM-C In Practice" by Steve Scott, UIKonf(2016)
- video
- slides
- sample code
- Model-View-ViewModel-Coordinator
- 今回お話した内容はこのアーキテクチャとほぼ同じです。
- Connecting View Controllers at Swift Talk(objc.io), 2016 ← 一番オススメ!!
- RxSwiftのサンプル内のWireframe
補足
CoordinatorとViewModel、もしくはCoordinatorとViewController間の通信には、以下のような方法があるかと思います。
- delegate
- closureを渡す
- FRPライブラリなどを利用する(オブザーバーパターン)
どの方針で実装しても、本質的には差異はないと思いますが、書き方が異なります。上で上げた参考資料では、closureを渡して通信する方法が多いと思います。
自分のプロジェクトではFRPライブラリ(ReactiveCocoa)を使用しています。そのため、上の資料を一通り眺めたあと、ReactiveCocoaを利用する方法で自分で書いて行っています。
また、Coordinator間で共通処理がある場合(違う場所に同じVCが出る場合など)には、Protocolで共通処理を記述することも行っていますが、それはまた別の機会にまとめようと思います。