我有一个包含 4 个 IF 条件的简单 VStack View ,每个条件将显示正确的 View :
VStack{
if(showLogin){
LoginView()
}
if(showMain){
Main()
}
if(showSplash){
Text("Splash screen")
}
if(showNoInternet){
noInternetView(showNoInternet: $showNoInternet, showSplash: $showSplash)
}
}
对于这个 View ,我有一个 .onAppear()
在出现此 View 时运行代码:@State var showLogin = false
@State var showMain = false
@State var showNoInternet = false
@State var showSplash = true
var body: some View {
VStack{
if(showLogin){
LoginView()
}
if(showMain){
Main()
}
if(showSplash){
Text("Splash screen")
}
if(showNoInternet){
noInternetView(showNoInternet: $showNoInternet, showSplash: $showSplash)
}
}
.onAppear(){ ... }
}
在.onAppear()
的代码内我检查用户是否有互联网连接,如果没有,我会同时切换 splash
和 showNoInternetView
隐藏启动画面并显示无 Internet 连接消息。当用户按下 showNoInternetView
中的按钮时,它会相反地隐藏消息并再次显示启动屏幕,我想在 .onAppear()
中再次运行相同的代码.显然我知道要重新渲染一个 View ,你必须改变一个状态——这就是我更新 View 的方法。我将如何调用
.onAppear()
每次我回到原来的初始 View 时(好像是第一次运行 View )都会再次运行?
最佳答案
而是直接将其附加到启动 View ,因此一旦您进入启动 View 状态,它将按预期运行。
if(showSplash){
Text("Splash screen")
.onAppear(){ ... } // << move here !!
}
关于ios - SwiftUI 中是否有 .onReappear 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63632346/