在NavigationView中,選擇其他目的地時,此目標視圖onAppear按預期撥打。但是onDisappear,只有在選擇第三個目標之后,至少沒有立即將其稱為另一個目的地(至少不是立即)(請參見下面的日志輸出)。
struct DetailModel: Identifiable {
var title: String
var id: String {
title
}
}
struct ContentView: View {
@State var details = [DetailModel(title:"one"), DetailModel(title:"two"), DetailModel(title:"three"), DetailModel(title:"four")]
var body: some View {
NavigationView {
List {
ForEach(details) { detail in
NavigationLink(detail.title) {
DetailView(detail: detail)
}
}
}
.navigationTitle("Details")
}
}
}
struct DetailView: View {
var detail: DetailModel
var body: some View {
Text("DetailView: \(detail.title)")
.onAppear() {
print("DetailView: onAppear: \(detail.title)")
}
.onDisappear() {
print("DetailView: onDisappear: \(detail.title)")
}
}
}
日志輸出(點擊事件之間的額外行)
DetailView: onAppear: one
DetailView: onAppear: two
DetailView: onDisappear: one
DetailView: onAppear: three
DetailView: onDisappear: two
DetailView: onAppear: four
onDisappear對于第一個詳細視圖,只有在選擇了第二個和第三個視圖后才會呼叫。
我了解 SwiftUI 試圖保留視圖以獲得更好的顯示性能。
如何檢測不再顯示視圖以便執行某些操作(例如暫停視頻播放器)?
適用于 iPad 的 iOS 15.6、XCode 14.0.1、Swift 5

uj5u.com熱心網友回復:
您可以嘗試添加.isDetailLink(true)到您的, 為我作業,按預期NavigationLink激活.onAppear和。.onDisappear
注意NavigationView已棄用,NavigationStack當您決定升級到 ios-16 時使用推薦的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/524222.html
上一篇:SQLite陳述句可發送
