iOS の家計簿アプリをつくる(UI/UX 調整編)

advent_calendar アドベントカレンダー

はじめに

こちらは個人開発アプリができるまで by am10 Advent Calendar 2024の 12 日目の記事です。

12 日目はエラー時のアラート表示や通信時のローディング表示など細かい調整についてです。

エラー時のアラート表示

サーバーからの家計簿データ取得失敗時などにアラートを表示する処理を追加します。
まずは表示するメッセージから実装していきます。下記のように各種 Error を修正して localizedDescription でエラーメッセージを取得できるようにします。

これで error.localizedDescription でメッセージが取得できるようになりました。
次に AlertEntity.swift ファイルを作成し下記のように実装します。

これで各 View に下記のように処理を追加すればアラートを表示できるようになります。

YearView, MonthView のデータ取得処理と RegisterView の登録処理と交通系 IC カード読み取り処理の失敗時の処理に下記を追加すればエラー時のアラート表示は完成です。

登録完了時のアラート表示

現状では登録完了時に登録画面が閉じるだけで登録完了ができたのかよくわからないので登録完了時もアラートを表示するようにします。
下記のように登録処理の成功時にアラート表示を追加するだけです。

バリデーション

次に家計簿データ登録時にバリデーションを追加します。
ItemValidationError.swift ファイルを作成し下記のように実装します。

ItemValidator.swift ファイルを作成し下記のように実装します。

ポイントは localPriority と globalPriority です。複数エラーがある場合にすべてのエラーを表示するのか 1 つだけ表示するのか決めるために使います。
globalPriority は name や price など項目ごとに設定し、localPriority は empty や length など項目内のエラーごとに設定します。

validate の return の処理を下記のように修正すれば最も優先度の高いもののみ表示できます。

validate の append の処理を下記のように修正すれば項目ごとに最も優先度の高いものを 1 つずつ表示できます。

RegisterView の追加・更新ボタンの処理を下記のように修正してやればバリデーション処理は完成です。

ItemValidator は思いつきで作ってみたので使いやすいかはわかりませんが何か問題があれば都度修正したいと思います。

ローディング

次にデータ取得などの通信時にローディングを表示します。
現状だとデータ取得・登録処理にそこそこ時間がかかるので待ち時間も退屈しないようにしたいと思います(おそらくスプレッドシートの読み書き処理が遅いと思うのですが改善方法がわかりません)。

まずはユーザーを退屈させないための画像 1 ~ 8 を追加します。
次に LoadingView.swift を作成し下記のように実装します。

あとは LoadingView を各画面で表示できるようにしてやります。
まずは YearView と MonthView です。それぞれ下記を追加します。

ContentView を下記のように修正してやるとデータ取得時にローディング画面を表示できます。

RegisterView も下記のように修正し登録時にローディング画面を表示するようにします。

これでローディングの表示も完成です。こんな感じです(みんな大好き S バイマン)。

1

おわりに

これでアプリの機能としてはほぼ完成です!!

明日はローカライズ対応をします。

Amazon.co.jp

コメント

タイトルとURLをコピーしました