85

私は SwiftUI をいじっていましたが、ボタンをタップしたときに前のビューに戻れるようにしたいと考えていpopViewControllerますUINavigationController。これまでにそれを行うための提供された方法はありますか?

私はまたNavigationDestinationLink、そうするために使用しようとしましたが、成功しませんでした。

struct AView: View {
    var body: some View {
        NavigationView {
            NavigationButton(destination: BView()) {
                Text("Go to B")
            }
        }
    }
}

struct BView: View {
    var body: some View {
        Button(action: {
            // Trying to go back to the previous view
            // previously: navigationController.popViewController(animated: true)
        }) {
            Text("Come back to A")
        }
    }
}
4

12 に答える 12

8

必要に応じて、NavigationView をプログラムでポップする方法が追加されました。これはベータ 5 です。

戻るボタンは必要ないことに注意してください。プログラムで DetailView の showSelf プロパティを任意の方法でトリガーできます。また、マスターに「プッシュ」テキストを表示する必要はありません。これは EmptyView() である可能性があり、それによって目に見えないセグエが作成されます。

(新しい NavigationLink 機能は、非推奨の NavigationDestinationLink を引き継ぎます)

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            MasterView()
        }
    }
}

struct MasterView: View {
    @State var showDetail = false

    var body: some View {
        VStack {
            NavigationLink(destination: DetailView(showSelf: $showDetail), isActive: $showDetail) {
                Text("Push")
            }
        }
    }
}

struct DetailView: View {
    @Binding var showSelf: Bool

    var body: some View {
        Button(action: {
            self.showSelf = false
        }) {
            Text("Pop")
        }
    }
}

#if DEBUG
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif
于 2019-07-30T01:22:19.933 に答える