Как минимум, мой код, как показано ниже. В SinglePersonView
Когда пользователь нажимает одно изображение mov ie в MovieListView (список mov ie, показывающий фильмы с участием актера), он открывает SingleMovieView
как режим листа.
Лист может быть выскочил как постукивание. Но я обнаружил, что после закрытия листа и повторного выбора других mov ie в MovieListView
лист всегда открывается, как моя предыдущая информация о mov ie или первый выбранный раз. И я мог видеть в консоли, movie id
всегда тот же самый, что и в первый раз. Теперь я не понимаю, нужна ли мне какая-то операция по перезагрузке при увольнении или что-то еще?
И это правильный способ использования .sheet()
в subView в SwiftUI, или его всегда следует хранить в основном теле? , SinglePersonView
в данном случае.
struct SinglePersonView: View {
var personId = -1
@ObservedObject var model = MovieListViewModel()
var body: some View {
ScrollView() {
VStack() {
...
MovieListView(movies: model.movies)
...
}
}.onAppear {
// json API request
}
}
}
struct MovieListView: View {
var movies: [PersonMovieViewModel]
@State private var showSheet = false
ScrollView() {
HStack() {
ForEach(movies) { movie in
VStack() {
Image(...)
.onTapGesture {
self.showSheet.toggle()
}
.sheet(isPresented: self.$showSheet) {
SingleMovieView(movieId: movie.id)
}
}
}
}
}
}