[SwiftUI]What I wear counter/着た回数カウンタ - (6) Switch View by User Input
- handmadeapp
- 2020年2月17日
- 読了時間: 2分
更新日:2020年2月18日
着た回数カウントアプリの続きです。
Item一覧から選択したItemの
・Itemとして登録した内容の変更
・Itemの削除
ができるよう、Detail Viewを更新します。

<Itemとして登録した内容の変更>
まずは、
・変更前/変更後の比較のためのデータ保持変数
・編集中かどうかの識別フラグ
・アラート表示フラグ
を用意し、
Detail View表示時に、当該Itemの情報を変更前/変更後用の変数に設定するように。
Name
・編集ボタン(鉛筆アイコン)タップで、TextをTextFieldに切り替え、編集可能にする
・Text / TextFieldの背景色を分け、編集中かどうかをわかりやすくする
・編集中、戻るボタン(左向き矢印)タップで、編集内容を破棄し元に戻すことができる
Last Wash Date
・編集ボタン(鉛筆アイコン)タップで、TextをTextFieldに切り替え、編集可能にする
・Text / TextFieldの背景色を分け、編集中かどうかをわかりやすくする
・編集中、戻るボタン(左向き矢印)タップで、編集内容を破棄し元に戻すことができる
Wear after Wash
・+/− のボタンタップで、表示される回数を+/− する
・元の回数から変更があった場合、背景色を分けてわかりやすくする
Save
・ボタンタップ時に、変更があった内容でItem情報を更新する
まずは、変更後用の変数に設定された値を、一覧から引き継いだ「item」に設定し、
CoreDataへの反映を行うFunctionを用意。
Saveボタンタップ時に「saveUpdate」を呼び出してItem情報を更新し、
AlertのOKボタンタップ時にDetail Viewの表示にも更新後のItem情報を反映。
Save後の内容でDetail ViewをRefresh (Reload?)する方法を調べたものの、
これという方法が見つからず、AlertのOKボタンタップ時のアクションで対応することに。
<Itemの削除>
Itemの削除は、Item一覧のListの「onDelete」でできるようにしていました。
ただ、テストをする中で、選択したものと異なるItemが削除されてしまうことが。。
調べてみたところ、こちらにあるように、Section付きListの「onDelete」は一筋縄では行かない模様。
ということで、諦めて、Detail ViewからItem削除できるように変更。
「本当にDeleteしていいですか?」という確認と、「Cancel」ボタンも付けました。

以上、Detail Viewも完成!
Comments