前回、なんとなく見た目がカッコいい感じになりましたので、本日は機能の追加を進めていきます。

忘れがち、というか、実際のところあまりちゃんと考えていなかったりするのですが、このアプリは、『メモ帳っぽいアプリ』を目指しています。

「……ほほう、そいつは初耳だニャ」

でしょうねえ。最初にチラッと言っただけですし。

その観点で見ると、今まで作っていたのが「メモ一覧画面」となります。
とすると、クリックすると「メモ編集画面」が立ち上がるのが自然ですね。

ということで、三角形ボタンをトリガーにして、別画面を立ち上げてみましょう。

幸いSwiftUIでは、様々な方法で別画面を呼ぶことができるようです。

・「NavigationView」を使った、別画面への遷移
・その応用で、「List」と組み合わせた、別画面への遷移
・「.sheet」を使った、モーダル方式での別画面への遷移

ふむふむ、「List」+「NavigationView」は、参考書でもよく見る形ですね。以前のiPhone作りでは考えられないほどシンプルになった例のヤツです。ただ、今回の仕組みでは「.sheet」の方が良さそうです。というより、カッコいいのでそれにしたいです。カッコいいので。

「.sheet」の実装方法は、

STEP1 フラグを一つ用意する
STEP2 フラグがOFFなら、別画面が開いていないと判断する
STEP3 「.sheet」で別画面用のViewを呼び出す

こんな感じ。

最近のiPhoneでお馴染みの、「下からせり上がってくるアニメーション」とともに、別画面が表示されます。

表示された別画面は、何もコーディングしていなくても、画面下方向にフリックすれば引っ込むのですが、「presentationMode」なる便利な環境変数があって、現在のビューが他のビューから呼び出されたビューかどうかの状態確認と、「dismiss()」ファンクションでビューを閉じることもできます。

別画面に「閉じるボタン」の形で仕込んでおくと、楽に出し入れ可能です。スルスルッと上がってきて、スルスルっと下がっていく。うむ、超スムーズ。

では、別画面を呼び出すことができましたたので、次回からそっちの画面に機能を足していきましょう。


Apple Developer Documentation
Instance Method > sheet
Presents a sheet when a binding to a Boolean value that you provide is true.
外部リンクを開く