swiftui - 从 SwiftUI 中的图像选择器中选择图片后,无法单击“完成”按钮
问题描述
从图像选择器中选择图片后,我无法单击“完成”按钮。谁能解释为什么?
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")
})
}
}
似乎焦点再次从主视图转到图像选择器视图。即 Button 中的 print("pressed") 不会被调用。
下面是我的 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) {
}
}
无法弄清楚出了什么问题。
解决方案
哦,是的,它工作正常。问题是由于另一行代码造成的。
推荐阅读
- arduino - Arduino双拍感知密码破解
- python - 在包含许多包含 CSV 的子文件夹的目录中批量运行 Pandas Concat 脚本
- mongodb - 选择一个文件夹来存储集合和数据库的问题
- javascript - Sass Sourcemap 错误行 - webpack
- python-3.x - pySpark 窗口函数
- animation - 为什么 Image() 在屏幕上移动,跳转到默认位置,每次点击屏幕,然后从默认位置开始移动?
- html - 如何对齐多个堆叠表中的列?
- python - 如何根据 csv 文件的列值获取行并将其保存到 csv 中?
- c# - 图形对象如何影响MeasureString
- html - 改变而不影响