子视图关闭后父视图不刷新

时间:2020-12-26 14:35:03

标签: ios swift swiftui

我有一个简单的视图(父视图),其中包含以下 NavigationLink

NavigationLink(
    destination: QuizScreen(quizPack: self.quizPack, isQuizPackOpen: $isQuizPackOpen),
    isActive: $isQuizPackOpen,
    label: {
        Text("Open")
            .font(.custom("Lato-Bold", size: 17))
            .foregroundColor(Color("colorAccent"))
    }
)

子视图自行关闭,只需将绑定参数 isQuizPackOpen 设置为 false

使用调试器时,我注意到当我关闭子视图时,父视图不会像更改简单的 @State 变量那样刷新。

子视图将isQuizPackOpen参数设置为false后是否可以刷新父视图?

1 个答案:

答案 0 :(得分:1)

使用 onAppear

@State var isQuizPackOpen = false
@ObservableObject viewModel = MyViewModel()
VStack {
   NavigationLink(destination: QuizScreen(quizPack: self.quizPack, isQuizPackOpen:$isQuizPackOpen),isActive: $isQuizPackOpen,
    label: {
            Text("Open")
                .font(.custom("Lato-Bold", size: 17))
                .foregroundColor(Color("colorAccent"))
            })
}.onAppear {
        print("ContentView appeared!")
        if !isQuizPackOpen {
         viewmodel.relaodOrRefreshData()
        }
}

如果您只在某些情况下需要刷新它,请将另一个 @State 变量传递给您的 QuizScreen,并检查它而不是 if !isQuizPackOpen