使NavigationLink目标视图“ onShow”执行

时间:2020-04-30 08:52:54

标签: swiftui swiftui-navigationlink

我正在构建一个健身应用,其中用户从列表中选择一个程序,当他单击选定的程序时,会出现一个新视图,其中包含视频播放(视频上带有倒数计时器)。

我使用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”矩形不可见。这是为什么?如何使它们也可见?

0 个答案:

没有答案