我看到“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) 我已经阅读了有关该问题的现有线程,并且评论表明这是一个错误并已在 11.7 上修复,但我仍在该版本上遇到它。
总之:
当应用程序启动时,您的视图View 1会触发 onAppear。
当我使用 Navigation Controller导航到子视图(View 2)时,没有为View 1触发 onDisappear ,但为View 2触发了 onAppear 。
当您导航回View 1 时,您不会获得View 1的 onAppear 或(view 2)的 onDisappear。
当视图出现/消失时,是否有一种可靠的方法来触发事件?或者我应该尝试跳到 Xcode 测试版?
示例代码:
import SwiftUI
struct DetailView: View {
var body: some View {
Text("Detail view")
.onAppear(){
print("DetailView onAppear fired")
}
.onDisappear(){
print("DetailView onDisappear fired")
}
}
}
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink(destination: …Run Code Online (Sandbox Code Playgroud)