#uinavigationcontroller #swiftui
#uinavigationcontroller #swiftui
Вопрос:
Итак, сначала я хотел избавиться от панели навигации с главного экрана, поскольку она не хочет показывать заголовок, и мне это действительно не нужно.
Однако я не могу удалить его, потому что я использую NavigationLink
. Итак, я остаюсь в небольшом затруднении.
Как мне либо скрыть панель инструментов / панель навигации на домашней странице, либо отобразить заголовок.
МИНИМАЛЬНЫЙ КОД
struct ContentView: View {
var body: some View {
NavigationView {
Text("Loading")
}.navigationBarTitle(Text("Home"))
}
}
Итак, после еще нескольких попыток кажется, что заголовок должен был отображаться в
var body: some View {
NavigationView {
if posts.isEmpty {
Text("Loading")
//.navigationBarTitle("") //this must be empty
.navigationBarHidden(true)
} else {
(REST OF CODE)
}
}
}
Все еще не могу скрыть это. Проблема в том, что он продолжает исчезать при выполнении инструкции if.
Комментарии:
1. Не могли бы вы свести пример к тестируемому, чтобы воспроизвести вашу проблему?
2. сделано @Asperi надеюсь, это поможет
Ответ №1:
.navigationBarTitle
, а также другие подобные модификаторы следует использовать внутри NavigationView
, например
struct ContentView: View {
var body: some View {
NavigationView {
Text("Loading")
.navigationBarTitle(Text("Home")) // << here !!
}
}
}
Обновление: если вы хотите, чтобы модификатор работал для обеих ветвей условия, оберните условие в некоторый контейнер ( VStack
, Group
и т.д.), Например
var body: some View {
NavigationView {
Group {
if posts.isEmpty {
Text("Loading")
} else {
(REST OF CODE)
}
}
//.navigationBarTitle("") //this must be empty
.navigationBarHidden(true) // << here !!
}
}
Комментарии:
1. Я обнаружил, что на самом деле проблема была не в позиционировании, а в том, что у нас был оператор if.