#swiftui #uikit
#swiftui #uikit
Вопрос:
После выбора изображения в окне выбора изображений я не могу нажать на кнопку «Готово». Кто-нибудь может объяснить почему?
struct AddTodoView: View {
@Environment(.managedObjectContext) private var viewContext
@Binding var showAddTodoView: Bool
@State private var displayImagePicker = false //
@State private var photoImage: Image?//
@State private var photoUIImage: UIImage?//
func getImage(){//
if let image = photoUIImage{
photoImage = Image(uiImage: image)
}
}
@State private var name: String = ""
@State private var selectedCategory = 0
var categoryTypes = ["family","personal","work"]
var body: some View {
VStack{
Text("Add Todo").font(.largeTitle)
TextField("To Do name",text: $name)
.textFieldStyle(RoundedBorderTextFieldStyle())
.border(Color.black).padding()
Text("Select Category")
Picker("",selection: $selectedCategory){
ForEach(0 ..< categoryTypes.count){
Text(self.categoryTypes[$0])
}
}.pickerStyle(SegmentedPickerStyle())
//
Button("Select Photo"){
self.displayImagePicker = true
}.padding()//
photoImage?.resizable().scaledToFit()//
}.padding()
.sheet(isPresented: $displayImagePicker, onDismiss: getImage){//
ImagePickerViewController(image: self.$photoUIImage)//
}//
Button(action: {
print("pressed")
},
label: {
Text("Done")
})
}
}
Кажется, что фокус снова переместился с основного вида на вид средства выбора изображений. т.е. печать («нажата») на кнопке не вызывается.
Ниже приведен мой ImagePickerViewController.
struct ImagePickerViewController: UIViewControllerRepresentable{
@Binding var image: UIImage?
class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate{
var parent: ImagePickerViewController
init(_ parent: ImagePickerViewController){
self.parent = parent
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info:[UIImagePickerController.InfoKey : Any]){
if let uiImage = info[.originalImage] as? UIImage{
parent.image = uiImage
}
picker.dismiss(animated: true)
}
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
func makeUIViewController(context: Context) -> some UIViewController {
let imagePicker = UIImagePickerController()
imagePicker.delegate = context.coordinator
return imagePicker
}
func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {
}
}
не могу понять, что не так.
Комментарии:
1. Чтобы избежать догадок, пожалуйста, предоставьте отдельный воспроизводимый пример.
2. добавлен imagepickerviewcontroller к моему исходному сообщению. Надеюсь, это поможет!
3. в моей системе работает отлично.
4. после того, как я выбираю фотографию, и средство выбора отклоняется, я не могу нажать «Готово». Но если я просто создам задачу, не выбирая фотографию, я могу без проблем нажать «Готово». Проблема возникает только при выборе фотографии
5. У меня все работает нормально. «нажата» появляется в журнале консоли, когда я нажимаю на кнопку. это единственное действие, которое у вас есть в вашем коде.
Ответ №1:
о да, все работает нормально. проблема была связана с другой строкой кода.