SwiftUIはNavigationViewスタックの一番下に移動します

ベンジェイコブ

親ビューがNavigationView一連のページA、B、Cを表示するa保持する次の設定があります。ページCには、ナビゲーションビューを非表示にするボタンがあります。ナビゲーションビューが再び表示されたときに自動的にページAに移動するようにしたいのですが、SwiftUIでこれを行う方法がわかりませんが、どうすればこれを実現できますか?

struct ParentView: View {
    @State var showNavigation:Bool = true
    var body: some View {
        ZStack {
            Button(action: {
                self.showNavigation = true
            }) {
                Text("Show navigation")
            }
            NavigationView {
                NavigationLink(destination: ChildA(showNavigation: $showNavigation)) {
                    Text("Go to A")
                }
            }.opacity(showNavigation ? 1.0 : 0.0)
        }
    }
}

struct ChildA: View {
    @Binding var showNavigation:Bool

    var body: some View {
        VStack {
            Text("A")
            NavigationLink(destination: ChildB(showNavigation: $showNavigation)) {
                           Text("Go to B")
                       }
        }
    }
}

struct ChildB: View {
    @Binding var showNavigation:Bool

    var body: some View {
        VStack {
            Text("B")
            NavigationLink(destination: ChildC(showNavigation: $showNavigation)) {
                           Text("Go to C")
                       }
        }
    }
}

struct ChildC: View {
    @Binding var showNavigation:Bool

    var body: some View {
        VStack {
            Text("C")
            Button(action: {
                self.showNavigation = false
            }) {
                Text("Hide Navigation")
            }
        }
    }
}

フロー

E.Coms

ここでの設定は複雑ではありません。1つは、中間ビューの場合、を設定する必要があることです.isDetailLink(false)それ以外の場合は、巻き戻し中に保持されます。

                    struct ParentView: View {
                    @State var showNavigation:Bool = true
                    @State var isActive:Bool = true
                    var body: some View {
                        ZStack {
                            Button(action: {
                                self.showNavigation = true
                            }) {
                                Text("Show navigation")
                            }
                            NavigationView {
                                NavigationLink.init(destination:  ChildA(showNavigation: $showNavigation, isActive: $isActive ), isActive: $isActive){
                                     Text("Go to A")
                                }
                            }.opacity(showNavigation ? 1.0 : 0.0)
                        }
                    }
                }

                struct ChildA: View {
                    @Binding var showNavigation:Bool
                    @Binding var isActive:Bool
                      @State var isNextActive:Bool = false
                    var body: some View {
                        VStack {
                            Text("A")
                            NavigationLink(destination: ChildB(showNavigation: $showNavigation, isActive: $isNextActive), isActive: $isNextActive) {
                                           Text("Go to B")
                            }.isDetailLink(false)
                        }.onReceive(Just(isNextActive)) { isNextActive in
                            if isNextActive == false && (!self.showNavigation) {

                                                  self.isActive = false
                            }
                        }
                    }
                }

                struct ChildB: View {
                     @Binding var showNavigation:Bool
                     @Binding var isActive:Bool
                     @State var isNextActive:Bool = false
                    var body: some View {
                        VStack {
                            Text("B")
                            NavigationLink(destination: ChildC(showNavigation: $showNavigation, isActive: $isNextActive), isActive: $isNextActive) {
                                           Text("Go to C")
                            }.isDetailLink(false)
                        }.onReceive(Just(isNextActive)) { isNextActive in
                            if isNextActive == false && (!self.showNavigation) {
                                DispatchQueue.main.async {


                                    self.isActive = false}
                            }
                        }

                    }
                }

                struct ChildC: View {
                    @Binding var showNavigation:Bool
                   @Binding var isActive:Bool
                    var body: some View {
                        VStack {
                            Text("C")
                            Button(action: {
                                self.showNavigation = false
                                self.isActive = false
                            }) {
                                Text("Hide Navigation")
                            }
                        }
                    }
                }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

動的に作成されたタグをselect2のリストの一番下に移動します

分類Dev

HTMLDivは親divの一番下に移動しません

分類Dev

フラグメントをスタックの一番上に移動します

分類Dev

Pythonクラッシュコース、第2版。横向きのシューティングゲーム。エイリアンは、一番上の行が一番下に当たるまで下に移動し続けます

分類Dev

XaxisをPlotlyのスタックチャートの一番下に移動する

分類Dev

SwiftUI Viewは、入力なしで自動的に一番下までスクロールします

分類Dev

SwiftUI Viewは、入力なしで自動的に一番下までスクロールします

分類Dev

フッターはブラウザページの一番下に移動しません

分類Dev

クリックするとアイテムを削除し、それらのアイテムをリストの一番下に移動します

分類Dev

テキストエディットのスクロールバーを一番上に移動します

分類Dev

スタックの一番上にViewControllerを追加します

分類Dev

Javascript-チャットの一番下まで自動的にスクロールします

分類Dev

EditTextがレイアウトの一番下に移動します

分類Dev

スクロールバーが一番下に移動した後、ボタンを有効にするにはどうすればよいですか?

分類Dev

スクロールバーが一番下に移動した後、ボタンを有効にするにはどうすればよいですか?

分類Dev

C ++スタックの一番下に追加する関数はありますか?

分類Dev

アイテムをクリックしたときにrecycledViewアイテムを一番下に移動する方法はありますか?

分類Dev

コンボボックスを垂直レイアウトの一番下に移動するにはどうすればよいですか?

分類Dev

HighChartsは、スタックの割合で合計を一番上にスタックします

分類Dev

htmlcssはimgをdivの一番上の行に移動します

分類Dev

ボタンをx回クリックした後、divの一番下までスクロールするにはどうすればよいですか?

分類Dev

Textareaは一番下まで自動スクロールします

分類Dev

Jqueryはテーブルの行を一番上に移動します

分類Dev

cssで一番上の行をテキストの一番下に移動する方法

分類Dev

フッターを一番下に移動するにはどうすればよいですか?

分類Dev

Googleスプレッドシートの一番上の関数に移動します

分類Dev

ListViewの自動スクロールは、手動で一番下までスクロールした場合にのみ機能します

分類Dev

画面が読み込まれると、UICollectionViewは自動的に一番下までスクロールします

分類Dev

ビューを動的に膨らませるときは、一番下までスクロールします

Related 関連記事

  1. 1

    動的に作成されたタグをselect2のリストの一番下に移動します

  2. 2

    HTMLDivは親divの一番下に移動しません

  3. 3

    フラグメントをスタックの一番上に移動します

  4. 4

    Pythonクラッシュコース、第2版。横向きのシューティングゲーム。エイリアンは、一番上の行が一番下に当たるまで下に移動し続けます

  5. 5

    XaxisをPlotlyのスタックチャートの一番下に移動する

  6. 6

    SwiftUI Viewは、入力なしで自動的に一番下までスクロールします

  7. 7

    SwiftUI Viewは、入力なしで自動的に一番下までスクロールします

  8. 8

    フッターはブラウザページの一番下に移動しません

  9. 9

    クリックするとアイテムを削除し、それらのアイテムをリストの一番下に移動します

  10. 10

    テキストエディットのスクロールバーを一番上に移動します

  11. 11

    スタックの一番上にViewControllerを追加します

  12. 12

    Javascript-チャットの一番下まで自動的にスクロールします

  13. 13

    EditTextがレイアウトの一番下に移動します

  14. 14

    スクロールバーが一番下に移動した後、ボタンを有効にするにはどうすればよいですか?

  15. 15

    スクロールバーが一番下に移動した後、ボタンを有効にするにはどうすればよいですか?

  16. 16

    C ++スタックの一番下に追加する関数はありますか?

  17. 17

    アイテムをクリックしたときにrecycledViewアイテムを一番下に移動する方法はありますか?

  18. 18

    コンボボックスを垂直レイアウトの一番下に移動するにはどうすればよいですか?

  19. 19

    HighChartsは、スタックの割合で合計を一番上にスタックします

  20. 20

    htmlcssはimgをdivの一番上の行に移動します

  21. 21

    ボタンをx回クリックした後、divの一番下までスクロールするにはどうすればよいですか?

  22. 22

    Textareaは一番下まで自動スクロールします

  23. 23

    Jqueryはテーブルの行を一番上に移動します

  24. 24

    cssで一番上の行をテキストの一番下に移動する方法

  25. 25

    フッターを一番下に移動するにはどうすればよいですか?

  26. 26

    Googleスプレッドシートの一番上の関数に移動します

  27. 27

    ListViewの自動スクロールは、手動で一番下までスクロールした場合にのみ機能します

  28. 28

    画面が読み込まれると、UICollectionViewは自動的に一番下までスクロールします

  29. 29

    ビューを動的に膨らませるときは、一番下までスクロールします

ホットタグ

アーカイブ