import SwiftUI struct PagePickerView: View { @Binding var showPagePicker: Bool @Binding var selectedPage: Page? @EnvironmentObject private var content: Content @Environment(\.language) private var language @State private var newSelection: Page? init(showPagePicker: Binding, selectedPage: Binding) { self._showPagePicker = showPagePicker self._selectedPage = selectedPage self.newSelection = selectedPage.wrappedValue // TODO: Fix assignment not working } var body: some View { VStack { Text("Select a page to link to") List(content.pages, selection: $newSelection) { page in let loc = page.localized(in: language) Text("\(loc.title) (\(page.id))") .tag(page) } .frame(minHeight: 300) HStack { Button("Use selection") { DispatchQueue.main.async { self.selectedPage = self.newSelection } showPagePicker = false } Button("Remove page", role: .destructive) { DispatchQueue.main.async { self.selectedPage = nil } showPagePicker = false } Button("Cancel", role: .cancel) { showPagePicker = false } } } .navigationTitle("Pick a page") .padding() } } #Preview { PagePickerView(showPagePicker: .constant(true), selectedPage: .constant(nil)) .environmentObject(Content.mock) }