навигация с помощью NavigationStack swiftUI

Я новичок в среде SwiftUI. Я пытаюсь реализовать NavigationStack. Я хочу перемещаться по действию кнопки вместо использования NavigationLink. Причина этого в том, что мне нужно перемещаться после того, как конкретная функция будет выполнена при нажатии кнопки.

структура AView: представление {

      @State private var actionss  = [Int]()

var body: some View {

    NavigationStack(path:$actionss) {
        VStack{
            Button("test") {
                actionss.append(0)
            }
        }
        .navigationDestination(for: Int.self) { data in
            BView()
        }
        
    }
    

}

}

Приведенный выше код «AView» отлично работает для навигации по «BView». Единственное, я не могу перемещаться по «CView» из «BView» без использования NavigationLink. Мне нужно выполнить определенную функцию, прежде чем перейти от «BView» к «CView». Пожалуйста, помогите мне в этом.

Заранее спасибо.

1 ответ

Предположим, что работа совершается наBViewвы можете использовать.navigationDestinationтакже:

      struct AView: View {
    @State private var actionss  = [Int]()

    var body: some View {

        NavigationStack(path:$actionss) {
            VStack{
                Button("show BView") {
                    actionss.append(0)
                }
            }
            .navigationDestination(for: Int.self) { data in
                BView()
            }
            .navigationTitle("AView")
        }
    }
}

struct BView: View {

    @State var show: Bool = false

    var body: some View {

        VStack {
            Button("show CView") {
                show = true
            }
        }
        .navigationDestination(isPresented: $show) {
            CView()
        }
        .navigationTitle("BView")
    }
}

struct CView: View {

    var body: some View {
        Text("Hello")
            .navigationTitle("CView")
    }
}