Итак, я пытаюсь скрыть панель навигации в представлении Details в SwiftUI. Технически я заставил его работать, используя init () в другом представлении, но проблема в том, что он делает навигационную панель прозрачной для всего приложения, а мне нужно только одно представление. Причина, по которой я не использовал init () в DetailsView, заключается в том, что у меня есть переменная, требующая ввода, поэтому я не знал, как это сделать! Вот код инициализатора:
init() {
let navBarAppearance = UINavigationBar.appearance()
navBarAppearance.backgroundColor = .clear
navBarAppearance.barTintColor = .clear
navBarAppearance.tintColor = .black
navBarAppearance.setBackgroundImage(UIImage(), for: .default)
navBarAppearance.shadowImage = UIImage()
}
Вот как выглядит код Content View и Details View с init () внутри detailsView:
// ContentView //
struct ContentView: View {
var body: some View {
NavigationView {
List {
ForEach(0..<5) { i in
NavigationLink(destination: DetailsView(test: 1)) {
Text("DetailsView \(i)")
}
}
}
.listStyle(InsetGroupedListStyle())
.navigationBarTitle("Test App")
}
}
}
// DetailsView //
struct DetailsView: View {
var test: Int
var body: some View {
ScrollView {
Text("More Cool \(test)")
Text("Cool \(test)")
Text("Less Cool \(test)")
}
}
init(test: Int) {
self.test = 8
let navBarAppearance = UINavigationBar.appearance()
navBarAppearance.backgroundColor = .clear
navBarAppearance.barTintColor = .clear
navBarAppearance.tintColor = .black
navBarAppearance.setBackgroundImage(UIImage(), for: .default)
navBarAppearance.shadowImage = UIImage()
}
}
struct DetailsView_Previews: PreviewProvider {
static var previews: some View {
DetailsView(test: 8)
}
}
Это сильно отредактированная версия моего кода, но она показывает мою проблему. Без необходимости передавать переменные, init () удалял полосу только в этом представлении. Однако при вводе этой переменной он не только изменяет все представления на «8» для числа, но также даже не скрывает панель навигации. Я не уверен, что я просто делаю что-то не так, или это даже правильный способ сделать это, но любая помощь будет принята с благодарностью! скрыть statusBar в iOS 14 с помощью NavigationView?