inflearn logo
강의

講義

知識共有

manutd6229169の正直なレビュー、SwiftUI + TCA: 実戦プロジェクトで完成する次世代iOS アーキテクチャ 講座

manutd6229169

受講レビュー 4

平均評価 5

プロジェクト導入にとても役立ちました :) もしかして質問も受け付けていただけますか..??

1

dumveloper

はい、もちろんです!質問してください!プロジェクトのお手伝いができて光栄です!

1

manutd6229169

ありがとうございます! 初めてTCAに触れたにも関わらず、講義がとても良くできていたので、時間は少しかかりましたが無難(?)に理解もでき、実際のプロジェクトにも適用することができました。 講義で扱ったように、マイページ → [メール / プロフィール / ニックネーム] 編集画面のような単一の深さの画面遷移は理解しやすく、実装もうまくできています! しかし実際のアプリでは、Instagramのように 投稿 → ユーザーAのプロフィール → ユーザーAのフォローリスト → ユーザーBのプロフィール → ユーザーBのフォローリスト… このような形で継続的に深くなる画面遷移構造がよく登場するのですが、この部分で困難を感じています。 私が講義でどの部分を見落としたのか、 それともこのような多層(?)、ネスト(?)ナビゲーションパターンは元々TCAで少し厄介な方なのか アドバイスをいただきたいです! 念のため、現在実装した方法をお話しすると マイページに関するナビゲーション構造を作って再利用可能だと思ったのですが、そうしようとすると壊れてしまって、今は… マイページから移動可能なケースを[フォロー/フォロイングリスト、投稿]画面と仮定するなら 例えば 1番タブが投稿関連だとすると、結局マイページに入らなければなりませんよね? 2番タブがリール/ショーツ関連タブだとすると、ここでも結局マイページに入らなければならないし しかし今は各タブ画面でマイページ画面遷移ケースを全て同じようにコピペして使用中です😢

0

dumveloper

返信の通知に気づかず、大変遅くなってしまい申し訳ありません。 エラーの原因は分かりかねますが、ナビゲーション構造を作って再利用することは可能です。 例えば、ナビゲーションを担当する子リデューサーを作っておき、そのリデューサーに進入するスコープをすべて指定した上で、 Scope(state: \.profile, action: \.profile) { ProfileFeature() } 親タブごとにStackStateで管理すればよいかと思います。 state.path.append(.profile(ProfileFeature.State(userId: "me"))) ここでは改行がうまく反映されず、読みづらいかもしれませんねㅠㅠ @Reducer struct Path { @ObservableState enum State: Equatable { case profile(ProfileFeature.State) } enum Action { case profile(ProfileFeature.Action) } var body: some ReducerOf { Scope(state: \.profile, action: \.profile) { ProfileFeature() } } } @Reducer struct HomeTabFeature { @ObservableState struct State: Equatable { var path = StackState() } enum Action { case path(StackAction) case didTapMyProfile } var body: some ReducerOf { Reduce { state, action in switch action { case .didTapMyProfile: state.path.append(.profile(ProfileFeature.State(userId: "me"))) return .none ...

0

dumveloper

34講

71名受講

SwiftUI + TCA: 実戦プロジェクトで完成する次世代iOS アーキテクチャ
4.9(11件の受講レビュー)