Вызвать 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
}
}