【发布时间】:2020-07-21 16:48:05
【问题描述】:
我有一个数据输入视图,允许用户添加图像并在添加后查看预览。
ImagePickerView 我返回了一个UIImage,我通过.pngData 转换器将它作为Data 类型保存到Core Data。但是,选择图像后,即使我使用@ObservedObject 和objectWillChange,视图也不会更新以显示它
我不能使用@State,因为草稿对象是NSManagedObject
import SwiftUI
import CoreData
struct AddItemView: View {
@Environment(\.managedObjectContext) var moc
@Environment (\.presentationMode) var presentationMode
@State var showImagePicker: Bool = false
@ObservedObject var draft: Item //Core Data entity
var body: some View {
NavigationView {
VStack {
if (draft.image != nil) {
Image(uiImage: UIImage(data: draft.image!)!)
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: UIScreen.main.bounds.width - 32, height: UIScreen.main.bounds.height / 4)
.clipShape(RoundedRectangle(cornerRadius: 20))
} else {
Button(action: {
self.showImagePicker = true
}, label: {
RoundedRectangle(cornerRadius: 20)
})
.padding([.all], 20)
}
}
.sheet(isPresented: $showImagePicker) {
ImagePickerView(sourceType: .photoLibrary) { image in
draft.objectWillChange.send()
draft.image = image.pngData()
}
}
}
}
}
【问题讨论】:
标签: ios swift core-data swiftui