SwiftUI onAppear/onDisappear在Xcode 11.7(11E801a)iOS 13.7中不工作
我已经读过关于这个问题的文章,评论指出这是一个bug,已经在11.7上修复了,但是我仍然在那个版本上遇到它 总之: 当应用程序启动时,您的视图视图1会触发onAppear 当我使用导航控制器导航到子视图(视图2)时,不会为视图1触发onDisappear,但会为视图2触发onAppear 当您导航回视图1时,您不会看到视图1的onAppear或(视图2)的onDisappear 当视图出现/消失时,是否有可靠的方法来触发事件?或者我应该尝试跳到Xcode测试版吗 示例代码:SwiftUI onAppear/onDisappear在Xcode 11.7(11E801a)iOS 13.7中不工作,swiftui,Swiftui,我已经读过关于这个问题的文章,评论指出这是一个bug,已经在11.7上修复了,但是我仍然在那个版本上遇到它 总之: 当应用程序启动时,您的视图视图1会触发onAppear 当我使用导航控制器导航到子视图(视图2)时,不会为视图1触发onDisappear,但会为视图2触发onAppear 当您导航回视图1时,您不会看到视图1的onAppear或(视图2)的onDisappear 当视图出现/消失时,是否有可靠的方法来触发事件?或者我应该尝试跳到Xcode测试版吗 示例代码: import S
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: DetailView()) {
Text("Show detail view")
}
.navigationBarTitle("Master view")
}
.onAppear(){
print("ContentView onAppear fired")
}
.onDisappear(){
print("ContentView onDisappear fired")
}
}
}
您已将
onAppear{..}
和onDisappear{..}
添加到导航视图中,该视图仍然可见/显示在详细视图中。我想,你得到的是预期的行为onDisappear{..}
仅在视图从屏幕关闭时调用
将onAppear{..}
和onDisappear{..}
添加到文本视图将得到预期的结果
更新内容视图:
更新代码的输出:
谢谢!你能提供一个吗?补充!fwiw detailView的onDisappear启动了,所以我想问题是contentView的onAppear只在初始加载时启动。这就是SwiftUI的工作方式。您可以在DetailView中使用
onDisappear
,而不是ContentView中的onAppear
。但是如果你解释一下你为什么需要它,你可能会得到一个更好的答案。我以为每次我回到风景区,一个幻影就会开火。我正在使用它们来管理Firebase快照侦听器。我想知道onDisappear至少起作用,我就能解决我的问题。非常感谢!这是非常有用的,也是我需要的。现在一切正常@Helvetica很高兴它帮助了你。请检查一下这个,
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink(destination: DetailView()) {
Text("Show detail view")
.onAppear {
print("ContentView onAppear fired")
}
.onDisappear {
print("ContentView onDisappear fired")
}
}
.navigationBarTitle("Master view")
}
}
}
ContentView onAppear fired
DetailView onAppear fired
ContentView onDisappear fired
ContentView onAppear fired
DetailView onDisappear fired