Updated for Xcode 14.2
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")
}
}
}
Download this as an Xcode project
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")
}
}
}
Download this as an Xcode project
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)
}
}
}
Download this as an Xcode project
That will make small navigation titles, but you can also use .large
to force a large title.
SPONSORED Play is the first native iOS design tool created for designers and engineers. You can install Play for iOS and iPad today and sign up to check out the Beta of our macOS app with SwiftUI code export. We're also hiring engineers!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.