每次将导航视图推到视图[SwiftUI]

时间:2020-05-21 17:05:28

标签: swiftui uinavigationbar swiftui-navigationlink

在过去的一个小时中,我一直在为此苦苦挣扎,主要是因为我看到的所有解决方案似乎都比真正的解决方案更具破解性,这使我对SwiftUI在SwiftUI中的生产准备情况提出了疑问。

我有一个MainView和PushView,我需要在两个View上都隐藏navBar。 但是,这会导致以下问题:

1)将PushView推入MainView时,导航栏出现故障,然后消失。

2)现在无法返回MainView,因为PushView中的后退按钮也已隐藏。

我想要的是PushView中我自己的按钮,该按钮会弹出该视图并返回到HomeView

我在做什么错了:

struct HomeView: View {
    var body: some View {

        NavigationView {

            NavigationLink(destination: PushView()) {
                Text("PRESSME")
            }.navigationBarTitle("")
            .navigationBarHidden(true)

        }
    }
}

struct PushView: View {

    var body: some View {
        Text("Hello View Two")
    }
}

1 个答案:

答案 0 :(得分:1)

是的,由于您已经体验过NavBar,所以它有点麻烦。

在我看来,一种干净利落的解决方案看起来像这样:

struct HomeView: View {
    var body: some View {

        NavigationView {

            NavigationLink(destination: PushView()) {
                Text("PRESSME")
            }.navigationBarTitle("")
                .navigationBarHidden(true)

        }
    }
}

struct PushView: View {
    @Environment(\.presentationMode) var presentationMode

    var btnBack : some View {
        Button(action: {
            self.presentationMode.wrappedValue.dismiss()
        }) {
            Image(systemName: "chevron.left")
        }
    }

    var body: some View {
        VStack {
            HStack {
                btnBack // Your custom back button.
                    .padding()
                Spacer()
            }
            Spacer()
            Text("Hello View Two")
            Spacer()
        }
        .navigationBarTitle("")
            .navigationBarHidden(true) // This hides the NavBar on PushView.
    }
}