ios - SwiftUI 中是否有 .onReappear 等价物

标签 ios swift swiftui

我有一个包含 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()的代码内我检查用户是否有互联网连接,如果没有,我会同时切换 splashshowNoInternetView隐藏启动画面并显示无 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/

相关文章:

ios - 如何在 SwiftUI 中隐藏 NavigationView Bar

ios - 在 URLSession.uploadTask :with :fromFile 上设置边界

swift - 如何为父 ScrollView 之外的 View 设置动画

SwiftUI:如何为 TabView 选择设置动画?

ios - SwiftUI 组合 : @Published is only available on properties of classes

ios - Swift NSTimer 无法识别的选择器发送到实例 timerFireMethod

ios - 用于在多个 ViewController 上显示标签的自定义 UIView?

ios - Xcode 5和Cocos2d : Random Errors Like: 'No Known Class Method for Selector ' scene'?

ios - 如何在第一首歌曲播放完毕后自动在 tableview 中播放下一首歌曲

ios - menuController Action 的 tableView 设置编辑不起作用