SwiftUIのNavigationViewを使った画面遷移を含むアプリ開発の際、遷移先の子ビューのプレビュー画面にはnavigationBarTitleやnavigationBarItemsなどで設定したUIが表示されない。
以下は現在作っているアプリのプレビュー用コードだが、これではLessonDetailViewで設定したnavigationBarTitleなどが表示されない。
struct LessonDetailView_Previews: PreviewProvider {
static var previews: some View {
let context = (UIApplication.shared.delegate as! AppDelegate)
.persistentContainer.viewContext
let lesson = Lesson(context: context)
// ...
// 一部省略
// ...
return LessonDetailView(lesson: lesson)
.environment(\.managedObjectContext, context)
.environment(\.locale, Locale(identifier: "ja_JP"))
}
}
これを表示させたい場合は、上記コードのreturn文以下を次のように修正すれば良い。
return NavigationView {
LessonDetailView(lesson: lesson)
.environment(\.managedObjectContext, context)
.environment(\.locale, Locale(identifier: "ja_JP"))
}
ビューをNavigationViewで囲むことで、親ビューから遷移した状態をプレビューで再現することができる。