我想顯示存盤在 EnvironmentObject 中的影像(型別 UIImage)。這個 EnvironmentObject 由一個包含 UIImage 元素的結構陣列組成。在一個視圖中,我想顯示此陣列的影像,但這以某種方式不起作用。
這是結構:
struct TestStruct: Identifiable {
var id: String
var name: String
var image: UIImage
init() {
id = ""
name = ""
image = UIImage.init()
}
}
這里是 ModelData 類:
final class ModelData: ObservableObject {
@Published var testStruct: [TestStruct] = []
}
這是主應用程式代碼中modelData的實體化:
struct TestApp: App {
@ObservedObject private var modelData = ModelData()
init() {...
modelData 的內容從 Firebase 資料庫和 Firebase 存盤加載。這確實有效,我可以在除錯預覽中的 modelData.testStruct[...].image 中看到下載的影像。
從一個角度來看,我想從模型資料中參考影像:
struct StructContentView: View {
@EnvironmentObject var modelData: ModelData
var body: some View {
ScrollView {
Image(uiImage: modelData.testStruct[0].image)
.frame(width: 64.0, height: 64.0)
.foregroundColor(.red)
}
}
}
有人能幫我嗎?我通常對 ObservableObject/EnvironmentObject 和那些東西感到困惑,但我能夠在 TextView 中顯示例如 modelData.testStruct[0] 的欄位“名稱”。將 UIImage 傳遞給 Image 視圖是否錯誤,也許?或者那里還需要什么?
預先感謝您的支持。
uj5u.com熱心網友回復:
在 Firestone 的 getData 完成回呼中,設定了:
let reference = Storage.storage().reference(forURL: tempStruct.imageUrl)
reference.getData(maxSize: (1 * 1024 * 1024)) { (data, error) in
if let _error = error{
print(_error)
} else {
if let _data = data {
tempStruct.image = UIImage(data: _data)!
}
}
}
...
modelData.testStruct.append(tempStruct)
這是在應用程式啟動時完成的。當用戶轉到另一個選單項時,該影像將/將稍后顯示。
解決方案:
testStruct 型別的影像必須更改為@Published,因此還需要將 testStruct 更改為一個類:
class TestStruct: ObservableObject {
var id: String
var name: String
@Published var image: UIImage
init() {
id = ""
name = ""
image = UIImage.init()
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/393758.html
上一篇:在影像懸停時顯示兩個按鈕
下一篇:使用影像處理檢測近水平線
