// // ContentView.swift // Toolbar // // Created by Tobias on 16.12.20. // import SwiftUI struct ContentView: View { enum Selection: String { case First } @State private var selection: Selection? = .First var body: some View { NavigationView { List { NavigationLink( destination: DetailsView(), tag: Selection.First, selection: $selection ) { Text("First") } } .listStyle(SidebarListStyle()) } } } struct DetailsView: View { @State private var displayAdd = false @State private var message = "Initial Message" var body: some View { Text(message) .toolbar { ToolbarItem(placement: .primaryAction) { Button("Add") { self.displayAdd = true } } } .sheet(isPresented: $displayAdd) { SheetView(completion: didFinish) } } func didFinish(_ result: SheetView.Result) { displayAdd = false switch result { case .Success: message = "Success" default: message = "Cancelled" } } } struct SheetView: View { typealias Completion = (Result) -> Void enum Result { case Cancel case Success } private var completion: Completion init(completion: @escaping Completion) { self.completion = completion } var body: some View { Text("Modal Sheet") .toolbar { ToolbarItem(placement: .confirmationAction) { Button("Done") { completion(.Success) } } ToolbarItem(placement: .destructiveAction) { Button("Cancel") { completion(.Cancel) } } } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }