Вы можете установить .navigationBarHidden(true)
для ребенка View
, представляемого в NavigationView
. Я не уверен, как выглядит следующий экран View
, но я бы попробовал вот что:
struct NextScreen: View {
var body: some View {
Group {
// existing body content
}
.background(LinearGradient(gradient: Gradient(colors: [.black, ColorTheme.brandPurple.color]), startPoint: .top, endPoint: .bottom))
.navigationBarTitle(Text("Next Screen"), displayMode: .inline)
.navigationBarHidden(true)
}
}
Group
на всякий случай, если содержимое вашего тела не полностью заключено в View
(например, VStack
, List
, et c.) Какого-то рода.
Может быть полезно думать об этом так:
NavigationView
обычно наследуется .navigationBarHidden()
от его дочерних взглядов. Тем не менее, поскольку .navigationBarHidden()
и .background()
явно определены вне NavigationView
в EventsScreen
, они, как представляется, работают в обратном направлении и применяются также к дочерним представлениям в EventsScreen
(если только эти представления не имеют своих собственных явно определенные свойства).
Хотя представление NextScreen
по-прежнему представлено в NavigationView
, NextScreen
инициализируется с собственными свойствами по умолчанию, такими как цвет фона. Как только приложение перейдет / обновится до NextScreen
, свойства NextScreen
будут иметь прецедент, включая значение по умолчанию .navigationBarHidden(false)
и, вероятно, системный цвет фона. Это вопрос о том, какой View (и его свойства) будет иметь прецедент, и SwiftUI имеет тенденцию давать первые метки дочерним элементам и расширяться оттуда (при условии, что область действия данного свойства применяется к его родительским представлениям).
Таким образом, в итоге, эти значения по умолчанию должны быть явно переопределены в каждом представлении, которое появляется в NavigationView
, если вы хотите, чтобы они оставались измененными.