Вызвать PhotoPicker программно?

SwiftUI PhotoPicker отлично подходит для создания кнопки/метки, которую нужно нажать, а затем показать средство выбора фотографий при нажатии на метку. Однако я хотел бы вызывать средство выбора фотографий не после нажатия метки средства выбора, а после прохождения условного теста.

Например, если пользователь нажимает кнопку, которая вызовет средство выбора фотографий, я хотел бы сначала проверить, была ли сохранена запись, к которой будет прикреплено изображение. Если запись была сохранена, я хочу запустить сборщик. Если он не был сохранен, я покажу предупреждение с вопросом, хотят ли они сохранить или отменить. Если они выберут «Сохранить», я сохраню запись, ТОГДА я хочу автоматически вызвать средство выбора фотографий.

Итак, могу ли я вызывать средство выбора программно, а не щелкать его пользователем? Спасибо за совет!

1 ответ

В iOS 16 вы можете сделать это с помощью photosPicker(isPresented :

      struct DemoView: View {
    
    @ObservedObject var viewModel: DemoViewModel

    var body: some View {
        VStack {
            Text("Demo Project")
        }
        .photosPicker(isPresented: $viewModel.shouldPresentPhotoPicker, selection: $viewModel.selectedPickerItem)
    }
}

class DemoViewModel: ObservableObject {
    @Published var shouldPresentPhotoPicker = false
    @Published var selectedPickerItem: PhotosPickerItem?

    func saveTheRecord() {
        /// Make an async call, and wait
        shouldPresentPhotoPicker = true // Shows the Picker
    }
}
Другие вопросы по тегам