При попытке загрузить изображение после загрузки вида объект модели, управляющий видом (см. Ниже MovieDetail), имеет строку urlString. Поскольку элемент SwiftUI View
не имеет методов жизненного цикла (и не управляет контроллером представления), каков наилучший способ справиться с этим?
Основная проблема, с которой я сталкиваюсь, заключается в том, каким образом я пытаюсь решить проблему (привязка объекта или использование переменной состояния), в моем представлении не отображается urlString
до тех пор, пока не будет загружена ...
// movie object
struct Movie: Decodable, Identifiable {
let id: String
let title: String
let year: String
let type: String
var posterUrl: String
private enum CodingKeys: String, CodingKey {
case id = "imdbID"
case title = "Title"
case year = "Year"
case type = "Type"
case posterUrl = "Poster"
}
}
// root content list view that navigates to the detail view
struct ContentView : View {
var movies: [Movie]
var body: some View {
NavigationView {
List(movies) { movie in
NavigationButton(destination: MovieDetail(movie: movie)) {
MovieRow(movie: movie)
}
}
.navigationBarTitle(Text("Star Wars Movies"))
}
}
}
// detail view that needs to make the asynchronous call
struct MovieDetail : View {
let movie: Movie
@State var imageObject = BoundImageObject()
var body: some View {
HStack(alignment: .top) {
VStack {
Image(uiImage: imageObject.image)
.scaledToFit()
Text(movie.title)
.font(.subheadline)
}
}
}
}
Заранее спасибо.