🙌
[SwiftUI]プレビューでNavigationViewも表示して確認する方法
NavigationViewの遷移先のViewでナビゲーションバーまではプレビューできない
例えばSwiftUI
で以下のようなコードがあったとします。
struct ContentView: View {
var body: some View {
NavigationView {
List {
NavigationLink("Destination", destination: DestinationView())
}
.listStyle(GroupedListStyle())
.navigationTitle("ContentView")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct DestinationView: View {
var body: some View {
Text("Hello, world!")
.navigationTitle("Destination")
.toolbar {
Button("Add", action: { })
}
}
}
struct DestinationView_Previews: PreviewProvider {
static var previews: some View {
DestinationView()
}
}
ここでDestinationView
をプレビューするとき、ナビゲーションバーに配置するボタン(.toolbar
はiOS14から)が表示されません。
DestinationView
の中にNavigationView
を追加もできない(するべきではない)です。
遷移先Viewでもプレビューでナビゲーションバーを表示するには
ナビゲーションバーも含めてプレビューする場合、以下のようにする必要があります。
struct DestinationView_Previews: PreviewProvider {
static var previews: some View {
NavigationView {
DestinationView()
}
}
}
プレビュー時のみ、NavigationView
の中に入れます。そうすることで、プレビュー時にもナビゲーションバーも表示されます。
参考
Discussion