Simple NavigationStackɾNew NavigationLink NavigationStack { List(parks) { park in NavigationLink( park.name, // ભҠݩͷը໘ʹදࣔ͢Δ title value: park // ҙͷܕͷ value ) } .navigationDestination(for: Park.self) { park in ParkDetails(park: park) } } SwiftUI Navigation ͷ၆ᛌ > OS ʹΑΔมԽ͕ܹ͍͠ Navigation
Fire and forget API - NavigationLink - NavigationView { List(model.notes) { note in NavigationLink( note.title, destination: NoteEditor(id: note.id) ) } Text("Select a Note") } SwiftUI Navigation ͷ၆ᛌ > Fire and forget / State driven Navigation API
Fire and forget API - NavigationLink - NavigationView { List(model.notes) { note in // Binding ҾΛऔΒͳ͍ɻλοϓͰ͔͠ navigation Ͱ͖ͳ͍ NavigationLink( note.title, destination: NoteEditor(id: note.id) ) } Text("Select a Note") } SwiftUI Navigation ͷ၆ᛌ > Fire and forget / State driven Navigation API
ҟͳΔ View ͰแΉͱ Deep Link Ͱ͖ͳ͍ struct ContainerView: View { var body: some View { ContentView(selectedTab: .received) } } SwiftUI Navigation ͷ၆ᛌ > Fire and forget / State driven Navigation API
ContainerView ʹঢ়ଶΛ࣋ͨͤͯղܾ͢Δʁ struct ContainerView: View { let selectedTab: Tab var body: some View { ContentView(selectedTab: selectedTab) } } SwiftUI Navigation ͷ၆ᛌ > Fire and forget / State driven Navigation API
උ͍͑ͯͳ͍ struct ContentView: View { @State var draft: Post? var body: some View { Button("Edit") { draft = Post() } .sheet(item: $draft) { (draft: Post) in EditPostView(post: draft) } } } struct EditPostView: View { let post: Post var body: some View { ... } } Navigation API ͷ՝ʹͲ͏ཱ͔ͪ͏͔ > ભҠઌͷը໘ʹ Binding value Λ͢ػߏΛඋ͍͑ͯͳ͍ > Binding value Λ͢͜ͱ͕Ͱ͖Δ API overloads
Binding Value ΛͤΔ sheet API Λߟ͑Δ struct ContentView: View { @State var draft: Post? var body: some View { Button("Edit") { draft = Post() } .sheet(item: $draft) { (draft: Post) in EditPostView(post: draft) } } } struct EditPostView: View { let post: Post var body: some View { ... } } Navigation API ͷ՝ʹͲ͏ཱ͔ͪ͏͔ > ભҠઌͷը໘ʹ Binding value Λ͢ػߏΛඋ͍͑ͯͳ͍ > Binding value Λ͢͜ͱ͕Ͱ͖Δ API overloads
Binding Value ΛͤΔ sheet API Λߟ͑Δ struct ContentView: View { @State var draft: Post? var body: some View { Button("Edit") { draft = Post() } .sheet(item: $draft) { ($draft: Post) in // closure ʹ Binding value ΛͤΔΑ͏ʹͳͬͨΒྑͦ͞͏ EditPostView(post: $draft) } } } struct EditPostView: View { @Binding var post: Post var body: some View { ... } } Navigation API ͷ՝ʹͲ͏ཱ͔ͪ͏͔ > ભҠઌͷը໘ʹ Binding value Λ͢ػߏΛඋ͍͑ͯͳ͍ > Binding value Λ͢͜ͱ͕Ͱ͖Δ API overloads