我有一个简单的视图(父视图),其中包含以下 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
后是否可以刷新父视图?
答案 0 :(得分:1)
@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