Working with UI controls — SwiftUI Tutorials やってみた
概要
Working with UI controls — SwiftUI Tutorials | Apple Developer Documentationをやってみたのでメモ
メモ
Section 1: Display a user profile
static let `default`
- default は予約後だけど、エスケープすることで使えるっぽい
- swift の struct の default を生やす方法としてメジャーなパターンなのかな?
- Environment を body の中に書くとアクセスできない
- それはそうという気がする
- toolbar でツールバー追加できるのはよい
- こういうのはすぐ使いたくなる
- これはメソッドチェーンで書く方がみやすいのか...
Section 2: Add an edit mode
- profile 一つしか管理しなくて大丈夫か?
- ネイティブアプリだからユーザー1人しかいないし大丈夫だ
- この辺の思考の癖が抜けない
- EditMode | Apple Developer Documentation
- 標準の edit mode が用意されてるのはいい
- EditButton も標準で用意されていてそこに反映されるのか
Section 3: Define the profile editor
- Divider は CSS より本質的
- CSS だとどっちかのborderにつけるので本質的ではない
- constant
- immutable な value を Binding で wrap できる
- preview とか テスト以外で使わない方が良さそうな匂いがする
Binding<T>
で渡すには$
をつける- Bindingで受け取ってるということはポインタを参照してる感じなので、変更すれば元の値にも影響が出る
- enum の rawValue ってなんだ
- 多分enum型じゃない元の値ということだと思う
- Picker が標準で用意されてるの良い
- 選択時のstate更新とかも隠蔽されてそうなので楽そう
- DatePicker も標準であるのか
- これは羨ましい
- webだとブラウザ依存で体験を揃えるの大変
Section 4: Delay edit propagation
- Edit ボタンが自動で Done ボタンに変わる
- Cancel ボタンは自分で用意しないといけないが...
- onAppear / onDisappear でボタンとは別の部分に決定/キャンセルのロジックをかける
Observable
なものもState
に代入した時点で関連付けが消える- DeepCopy されてる感じ
- 確かにこの挙動の方が安全
- そのため一度Stateに入れておいて、Doneが押されたら書き戻すという遅延更新ができる
- よく考えたらモーダルを出すことを意識せずにモーダルができてるのすごい
- 表示を切り替えてるだけだがちゃんと上に被ってるように見える