TCA/SwiftUIの画面どうするか問題

TCA/SwiftUIの画面どうするか問題

作成日
Apr 16, 2021 6:05 PM

メモ

いろんな画面から差込で表示されうる画面をSwiftUIの場合は表示元が必ずNavigationLinkを持たないといけない。

しかも遷移とreducerは依存しないのでreducerをつなぎ忘れて、この画面から出てくる時だけactionが無視されると言ったことが起こりうる。

画面遷移のことだけ考えればAnyStateみたいなものを作れば良いのだが、これだと親reducerが難しい。

多分webの世界では画面の前後関係が存在しないのであまり問題にならなかったのかもしれない。

iOSの場合はmodal,pushと言った作業の過程を表現するのでゴリゴリ画面全体をstateに反映すれば良いという話にはならない(なるんだけどそうするとstateが散らばる)

ケースごとに分けてみるか、、

NavigationViewの最初を切り替えたいケース

A,B,Cの画面があり、Aを押すとA→B→Cの画面遷移をするNavigationViewが、Bを押すとB→Cの画面遷移をするNavigationViewが、Cを押すとCが入ったNavigationViewを表示するケース。

これは親がA,B,CそれぞれのStateを持ち、Cのタップアクションを親では

case .a(.b(.c(.tap))), .b(.c(.tap)), .c(.tap):

とハンドリングしないといけない。