List shows scrollable rows; NavigationStack handles pushing detail screens.
A dynamic list with navigation
struct UsersView: View {
let users: [User]
var body: some View {
NavigationStack {
List(users) { user in
NavigationLink(user.name) {
UserDetail(user: user)
}
}
.navigationTitle("Users")
}
}
}
Your model must conform to Identifiable (have an id) for List to track rows.
Tip: Add
.searchable() and .refreshable() modifiers for instant search and pull-to-refresh.Summary
List renders dynamic, identifiable data; NavigationStack + NavigationLink push detail screens with a built-in back button.