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.
SAVE 50% To celebrate WWDC23, all our books and bundles are half price, so you can take your Swift knowledge further without spending big! Get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn advanced design patterns, testing skills, and more.
Link copied to your pasteboard.