Skip to content

fumiyasac/ReduxSampleSwift

Repository files navigation

ReduxSampleSwift

[ING] SwiftでReduxとUI実装を合わせたサンプル(iOS Sample Study: Swift)

※現在はiOS14以上で動作する様に最低限のアップデートを実施しています。

【検証環境】

  • Xcode 14.2
  • Swift5.6
  • macOS Ventura 13.1

「チュートリアル → ユーザーの情報入力 → 1画面に複数の画面要素が混在する」という形のUI実装において、「アプリ表示に必要なデータの値 = アプリのUI要素の状態」として結びついている仕組みをiOSアプリでReduxアーキテクチャを実現するライブラリ「ReSwift」を利用して実現したアプリサンプルになります。

※Swift5.x系の変更点: Enum表記を右記のように変更しています。 【×】case someActionName(): → 【○】case someActionName:

ReSwift.Actionで定義しているEnumにおいて引数を取らない(Reducerへ値を送る必要が特段ない)ものについては()が不要です。

実装概要

画面遷移以外の画面の要素表示に関する部分をReduxで管理することでそれぞれの状態に合わせた状態を実現するような構成を取っています。またContainerViewを利用した親子関係を持ったViewControllerがある場合でも対処できるような形にしています。

本サンプルの画面キャプチャ

画面キャプチャその1

capture1.jpg

画面キャプチャその2

capture2.jpg

画面キャプチャその3

capture3.jpg

本サンプルにおけるRedux処理の概要図と処理フロー

Reduxの処理に必要な各々の処理で行われている内容と、処理フローをまとめた図解は下記のようになります。

whole_lifecycles.png

またこのサンプルにおけるRedux関連処理部分のファイル名は下記のようになります。

redux_files.png

利用ライブラリ一覧

KYNavigationProgressについてはSwift4.2でバージョン固定しています。

その他補足事項や詳細記事に関して

特にReduxのメリットを生かしたUI実装を行なっている部分のポイントは下記の3つのケースになるかと思います。

casestudy_examples.png

このサンプル全体の詳細解説とポイントをまとめたものは下記に掲載しております。

About

[ING] - Swift5.xでReduxとUI実装を合わせたサンプル

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published