起码,我的代码如下。在SinglePersonView
中,当用户在MovieListView(显示演员参加的电影的电影列表)中轻按电影的一个图像时,它会以工作表模式打开SingleMovieView
。
可以在点击时弹出工作表。但是我发现在关闭工作表并重新选择MovieListView
中的其他电影之后,工作表始终以我上次单击的电影信息(也就是第一次选择的电影信息)打开。我可以在控制台中看到movie id
始终与第一次相同。我现在不知道了,我是否需要在解雇上进行重装操作或其他?
这是在SwiftUI的subView中使用.sheet()
的正确方法,还是应始终将其保留在主体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)
}
}
}
}
}
}
答案 0 :(得分:0)
视图堆栈中应该只有一个.sheet,但是在提供的快照中,有许多一次被全部激活-实际上,以下行为是无法预测的。
已更正变体
$AsWMI[$PriorityClass]