我看到“ContentView出现了!” 仅第一次发送消息/onAppear
似乎被称为
是否有可能以任何其他方式检测返回到根目录?
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!")
}
}
}
Run Code Online (Sandbox Code Playgroud)
NavigationView
在view
s之间是持久的。因此,它实际上不是appear
和disappear
当你把它们之间流行。所以,你需要设置modifier
的S NavigationView的内容,不是在NavigationView
它的自我:
NavigationView {
NavigationLink(destination: DetailView()) { Text("Hello World") }
.onAppear { print("ContentView appeared!") }
.onDisappear { print("ContentView disappeared!") }
}
Run Code Online (Sandbox Code Playgroud)
找到了愚蠢的解决方案,但它有效。只需添加onAppear()
到VStack
内部根视图
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: DetailView()) {
Text("Hello World")
}
}.onAppear {
print("stack appeared!")
}
}.onAppear {
print("ContentView appeared!")
}.onDisappear {
print("ContentView disappeared!")
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
913 次 |
最近记录: |