モーダル画面に対するEnvironment(やEnvironmentObject)を指定においてハマったことがあったのでメモ。
これは、Environmentに設定した文字列を、モーダル画面で表示する単純な例。
これでは、モーダル表示するModalView()
にはEnvironmentは指定されない。
Environmentが、environment(_:_:)
を実行するビューのもつサブツリー全体に対して指定されるのに対して、sheet(…)
で表示するビューは、表示元のサブビューにあたらないからである。
.sheet(…
以下を次のように修正することで、モーダル画面に対して正しくEnvironmentを指定することができる。
ちなみに、NavigationViewに指定したEnvironmentは、NavigationLinkの遷移先に伝播される。