SwiftUI навигация - PullRequest
       113

SwiftUI навигация

1 голос
/ 09 июля 2020

У меня есть HomeView ()

NavigationView {
    ZStack {
        VStack {
             NavigationLink(destination: ProfileView()) {
                 if session.userInSession?.activated != 1 {
                     completionText(message: "Complete Your Profile")
                 } else {
                     completionText(message: "Edit Your Profile")
                 }
             }
        }
    }
}

Мой ProfileView () не заключен в представление навигации и не имеет заголовка панели:

VStack {
        ScrollView(showsIndicators: false) {
        }
}

Но мой ProfileView также доступен из моего SettingView ()

NavigationView {
        VStack(alignment: .leading) {
            List {
                NavigationLink(destination: ProfileView()) {
                }
            }
        }
}

Когда я открываю свой ProfileView с экрана настроек, он отображается нормально. Но когда я открываю его из своего HomeView, он создает пустое пространство вверху:

enter image description here

When I go through Settings its fine:

введите описание изображения здесь

Как удалить этот пробел выше?

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Похоже, ваш HomeView / s NavigationView имеет .navigationBarTitleDisplayMode(.large) или automati c, что по умолчанию .large, но ваш SettingView имеет .navigationBarTitleDisplayMode(.inline) (с учетом разделителя ниже < Setting), поэтому вы видите разную высоту строк заголовка.

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

VStack {
   ScrollView(showsIndicators: false) {
   }
}.navigationBarTitleDisplayMode(.inline)     // << here !!
0 голосов
/ 09 июля 2020

Этот пробел , вероятно, является пустым заголовком вашего NavigationView.

Вы можете попробовать скрыть заголовок панели навигации:

NavigationView {
    ZStack {
        ...
    }
    .navigationBarTitle("")
    .navigationBarHidden(true)
}

В качестве настройки пробной попытки .navigationBarTitle("Some title") и посмотрите, видите ли вы по-прежнему это пустое место или оно заменено Some title text.

...