我正在构建一个健身应用程序,用户从列表中选择一个程序,当他单击所选程序时,会出现一个新视图并播放视频(视频上有倒数计时器)。
我使用 NavigationView/NavigationLink 构建了屏幕,每个都有它的“目标视图”和它自己的参数。
let sets: [TrainingSet]
init() {
self.sets = [set1,set2,set3]
}
var body: some View {
NavigationView {
VStack {
ForEach(self.sets) { set in
NavigationLink(destination: ExerciseVideoView(items: set.items).navigationBarBackButtonHidden(true)) {
VStack {
Image("group-\(set.image)")
.resizable()
.renderingMode(.original)
.frame(height: 200, alignment: .leading)
.overlay(
Text(set.purpose)
.font(.largeTitle)
.fontWeight(.semibold)
.foregroundColor(.white)
)
Color.blue
.frame(maxWidth: .infinity)
.overlay(
Text(set.purpose)
.foregroundColor(.white)
)
}
}
}
}
}
}
1)我注意到,当父视图被构建时,所有目标视图(ExerciseVideoView)甚至在用户点击相应按钮之前就被执行。我的倒计时在后台启动。当用户单击 NavigationLink 并且“执行”新视图时,我应该看到它们启动。这是正确的行为吗?我可以在显示目标视图时使它们“执行/启动”吗?
2)第二个问题是我想在每个图像下方显示带有蓝色按钮的图像(我将它们都放在 VStack 容器中)。但是当我启动我的应用程序时,只显示图像,但“Color.blue”矩形不可见。这是为什么?如何使它们也可见?