0

【問題点まとめ】

.onAppear.navigationViewStyle(.stack)NavigationView で使用すると修飾子が 2 回呼び出されます。

【期待される効果と実績を記載】

.onAppear1回呼び出されることを期待しています.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
4

0 に答える 0