大佬教程收集整理的这篇文章主要介绍了OnAppear 和 OnDisappear 不会在第一次视图转换时触发,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用以下布局的 watchOS 应用程序:
NavigationVIEw {
if !HKHealthStore.isHealthDataAvailable() {
ContentNeedHealthKitVIEw()
} else if !isAuthorized {
ContentUnauthorizedVIEw()
} else {
TabVIEw(SELEction: $SELEction) {
WeightVIEw()
.navigationtitle("Weight")
.tag(1)
.onAppear {
print("Appear!")
}
.ondisappear {
print("disappear!")
}
SetTingsVIEw()
.navigationtitle("SetTings")
.tag(2)
}
}
}
遗憾的是,OnAppear
和 Ondisappear
操作仅在从视图转换到另一个第二次后执行。第一次向右滑动时,什么也没有发生。
您应该提供一个最小的可重现示例(请参阅 https://stackoverflow.com/Help/minimal-reproducible-example)。
你的行也产生了编译器错误。使用 onAppear
的正确方法是这样的:
.onAppear {
}
这是一个工作示例,一切都按预期工作。您还应该将 onAppear
ViewModifier 放置到子视图中。
import SwiftUI
struct WeightView: View {
var body: some View {
Text("WeightView")
.onAppear {
print("Appear!")
}
.onDisappear {
print("Disappear!")
}
}
}
struct SetTingsView: View {
var body: some View {
Text("SetTingsView")
}
}
struct ContentView: View {
@State var SELEction = 1
@State var isAuthorized = false
var body: some View {
NavigationView {
if !isAuthorized {
Button("authorize") {
isAuthorized.toggle()
}
} else {
TabView(SELEction: $SELEction) {
WeightView()
.navigationtitle("Weight")
.tag(1)
SetTingsView()
.navigationtitle("SetTings")
.tag(2)
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
以上是大佬教程为你收集整理的OnAppear 和 OnDisappear 不会在第一次视图转换时触发全部内容,希望文章能够帮你解决OnAppear 和 OnDisappear 不会在第一次视图转换时触发所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。