SwiftUI: Скрыть панель навигации на экранах Specifi c - PullRequest
0 голосов
/ 13 января 2020

Кажется, что я не могу выбрать, на каких страницах я хочу скрыть панель навигации в быстром пользовательском интерфейсе.

У меня есть следующие экраны:

Main

struct Main: View {
    var body: some View {
        NavigationView {
                Home()
            }
        }
}

Дом

struct Home: View {
    var body: some View {
            NavigationLink(destination: Details()) {
                    Text("Go Next")
            }
        // I expect the navigation bar to show up here, and it does
        .navigationBarTitle("Home")
        .navigationBarHidden(false)
    }
}

Подробности

struct Details: View {
    @Environment(\.presentationMode) var mode: Binding<PresentationMode>

    var body: some View {
            Button(action: { self.mode.wrappedValue.dismiss() }) {
                Text("Go Back")
            }
        // I expect the navigation bar to be hidden here
        // At first, it is hidden. Then, after a second, it pops up 
        // with the title "Details"
        .navigationBarTitle("Details")
        .navigationBarHidden(true)
    }
}

Либо я делаю это неправильно (вероятно), или у Apple есть работа (также вероятно).

1 Ответ

0 голосов

Как я видел ранее , что-то идет не так, когда вы используете оба:

.navigationBarTitle("some text")
.navigationBarHidden(true)

в приведенном ниже коде нет персонала панели навигации и ничего не появляется:

struct Details: View {
    @Environment(\.presentationMode) var mode: Binding<PresentationMode>

    var body: some View {
            Button(action: { self.mode.wrappedValue.dismiss() }) {
                Text("Go Back")
            }
        .navigationBarHidden(true)
        .navigationBarBackButtonHidden(true) // even no back button
    }
}
...