How to embed a view in a navigation view
How to embed a view in a navigation view 관련
Updated for Xcode 15
SwiftUI's NavigationStack
maps more or less to UIKit's UINavigationController
in that it presents content, it's able to handle navigation between views, and it places a navigation bar at the top of the screen.
In its simplest form you can place a text view into a navigation stack like this:
struct ContentView: View {
var body: some View {
NavigationStack {
Text("This is a great app")
}
}
}
However, that leaves the navigation bar at the top empty. So, you will usually use the navigationTitle()
modifier on whatever you're embedding, so you can add a title at the top of your screen, like this:
struct ContentView: View {
var body: some View {
NavigationStack {
Text("SwiftUI")
.navigationTitle("Welcome")
}
}
}
There is a second modifier, navigationBarTitleDisplayMode()
, that gives us control over whether to use large titles or smaller, inline ones. For example, by default views will inherit their large title display mode from whatever view presented them, or if it's the initial view then it will use large titles. But if you'd prefer to enable or disable large titles manually you should use .navigationBarTitleDisplayMode()
like this:
struct ContentView: View {
var body: some View {
NavigationStack {
Text("SwiftUI")
.navigationTitle("Welcome")
.navigationBarTitleDisplayMode(.inline)
}
}
}
That will make small navigation titles, but you can also use .large
to force a large title.