【問題点まとめ】
.onAppear
.navigationViewStyle(.stack)
NavigationView で使用すると修飾子が 2 回呼び出されます。
【期待される効果と実績を記載】
.onAppear
1回呼び出されることを期待しています.onAppear
が、2 回呼び出されます。
編集: プロジェクトへのリンクを削除し、問題を示すより単純なテンプレート コードを追加しました。
import SwiftUI
struct RootView: View {
@State private var showDestinationView = false
var body: some View {
NavigationView {
LeftView()
NavigationView {
NavigationLink(isActive: $showDestinationView) {
DestinationView()
} label: {
Button("Show Destination") {
print("didPressButton")
showDestinationView = true
}
}
}
.navigationBarTitle("Title")
.navigationViewStyle(.stack) // Without this line, onAppear is called once.
}
}
}
struct DestinationView: View {
var body: some View {
Text("Destination View")
.onAppear {
print("onAppear")
}
}
}
struct LeftView: View {
var body: some View {
VStack {
Spacer()
Text("Left")
Spacer()
}
}
}
そして、ここにログがあります:
didPressButton
onAppear
onAppear