Заголовок навигации не отображается

#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.