gpt4 book ai didi

SwiftUI onAppear/onDisappear 在 Xcode 11.7 (11E801a) iOS 13.7 中不起作用

转载 作者:行者123 更新时间:2023-12-04 01:14:20 28 4
gpt4 key购买 nike

我已经读过 this existing thread关于这个问题和评论表明这是一个错误并且已在 11.7 上修复,但我仍在该版本上遇到它。
总之:
当应用程序启动时,您的 View 查看1 触发 onAppear。
当我使用 Navigation Controller 导航到 subview ( View 2 )时,没有为 触发 onDisappear查看1 ,但 onAppear 确实会触发 查看2 .
当您导航回 时查看1 ,您没有获得 的 onAppear查看1 或 onDisappear for( View 2)。
当 View 出现/消失时,是否有一种可靠的方法来触发事件?或者我应该尝试跳到 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: DetailView()) {
Text("Show detail view")
}
.navigationBarTitle("Master view")
}
.onAppear(){
print("ContentView onAppear fired")
}
.onDisappear(){
print("ContentView onDisappear fired")
}
}
}

最佳答案

您已添加 onAppear {..}onDisappear {..}导航 View 仍然可见/出现在 中详情查看 .我想,你得到的是预期的行为。 onDisappear {..}只有当 View 从屏幕上消失时才会被调用。
添加 onAppear {..}onDisappear {..}给您的 正文 View 将给出您预期的结果。
更新的内容 View :

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
谢谢! 👨🏻‍💻

关于SwiftUI onAppear/onDisappear 在 Xcode 11.7 (11E801a) iOS 13.7 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63838185/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com