【发布时间】:2021-01-09 15:03:18
【问题描述】:
我的问题是我无法在另一个视图中显示所选图像,因为我无法将变量 selected 设置为 true。
我的变量:
@State private var selectedImage: UIImage?
@State private var isImagePickerDisplay = false
@State private var selected: Bool = false
第 1 步 - 我为用户展示 ImagePicker(工作正常):
.sheet(isPresented: self.$isImagePickerDisplay) {
ImagePickerView(selectedImage: self.$selectedImage, sourceType: .photoLibrary)
}
第 2 步 - 我找不到知道用户何时实际选择图像的正确方法。我试着这样做:
if selectedImage != nil {
selected = true
}
但我得到错误:
类型'()'不能符合'View';只有结构/枚举/类类型可以符合协议
第 3 步 - 如果用户实际从照片库中选择图像,我的计划是显示另一个视图:
.fullScreenCover(isPresented: $selected) {
EditView(selectedImage: $selectedImage)
}
请记住,我是 SwiftUI 的新手。我刚刚完成教程,现在我正在尝试自己开发一个项目。
编辑(添加了我的整个 ContentView()):
struct ContentView: View {
@State private var selectedImage: UIImage?
@State private var isImagePickerDisplay = false
@State private var selected: Bool = false
var body: some View {
Button(action: {
self.isImagePickerDisplay.toggle()
}) {
Image(systemName: "plus")
.renderingMode(.original)
.font(.system(size: 16, weight: .medium))
.aspectRatio(contentMode: .fit)
.frame(width: 36, height: 36)
.background(Color(.white))
.clipShape(Circle())
.shadow(radius: 10)
}.sheet(isPresented: self.$isImagePickerDisplay) {
ImagePickerView(selectedImage: self.$selectedImage, sourceType: .photoLibrary)
}
if selectedImage != nil {
selected = true
}
.fullScreenCover(isPresented: $selected) {
EditView(selectedImage: $selectedImage)
}
}
}
【问题讨论】:
-
不清楚在哪里叫什么,请提供完整的正文,或者更好的整体视图。
-
@Asperi 哦,对不起。为问题添加了整个视图。
-
在此之前从未听说过
ImagePickerView。一年半前我包装了一个UIImagePickerController,虽然它起作用了,但我当时决定不使用SwiftUI(现在仍然不会)。在网上搜索后,我看到这个图像选择器是第三方的。有没有可能是问题所在? -
@did 你好! @Asperi 解决了这个问题。实际上,这个第 3 方 ImagePickerView 非常适合我。
标签: swiftui