ios - 如何检测返回到 SwiftUI 中 NavigationView 的 Root View ?

标签 ios swiftui

我看到“ContentView 出现了!”仅第一次消息/onAppear 似乎被称为 ones

是否可以通过任何其他方式检测返回根?

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: DetailView()) {
                    Text("Hello World")
                }
            }
        }.onAppear {
            print("ContentView appeared!")
        }.onDisappear {
            print("ContentView disappeared!")
        }
    }
}

struct DetailView: View {
    var body: some View {
        VStack {
            Text("Second View")
        }.onAppear {
                print("DetailView appeared!")
        }.onDisappear {
                print("DetailView disappeared!")
        }
    }
}

最佳答案

NavigationViewview 之间持续存在。因此,当您在它们之间推送和弹出时,它实际上并不是 appeardisappear 。所以你需要在 NavigationView 的内容 上设置 modifierNOT NavigationView 它自己:

NavigationView {
    NavigationLink(destination: DetailView()) { Text("Hello World") }

    .onAppear { print("ContentView appeared!") }
    .onDisappear { print("ContentView disappeared!") }
}

关于ios - 如何检测返回到 SwiftUI 中 NavigationView 的 Root View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59007068/

相关文章:

ios - Tableview 不能用静态数据平滑滚动

iOS 11.2.1 Xcode 9.2 BoringSSL SSL_ERROR_ZERO_RETURN(6)

ios - 使用 Swift UIActivityViewController 从单独的类( View Controller )共享图像?

swiftui - @EnvironmentObject 在模式表上使用时消失

swift - 如何刷新Widget数据?

ios - 在@ViewBuilder 闭包中更改@State

ios - 如何在 swift3 中获取 CNLabeledValue 的本地化字符串

ios - OpenGL 4.1 中顶点数组对象未正确绑定(bind)

ScrollView SwiftUI

swiftui - macCatalyst/SwiftUI 触摸栏