У меня есть TabView, а одна из вкладок является NavigationView. Я хочу, чтобы панель вкладок была скрыта в представлении назначения навигации. Я добился этого, но вид отображается правильно только после первого поворота. Как заставить его правильно отображаться в первый раз (2-е изображение)?
struct ContentView: View {
var rowIndexes : [Int] = [0,1,2,3,4,5,6]
var body: some View {
TabView {
NavigationView {
List {
ForEach(self.rowIndexes, id: \.self) {i in
NavigationLink(
destination: Color(.blue)
.onAppear(perform: {
Global.tabBar!.isHidden = true
})
.onDisappear(perform: {
Global.tabBar!.isHidden = false
})
) {
Text("\(i)")
}
}
}
}.tabItem {
Image(systemName: "list.number")
Text("List View")
}
NavigationView {
Text("Options View")
}.tabItem {
Image(systemName: "wrench")
Text("Options")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct Global {
static var tabBar : UITabBar?
}
extension UITabBar {
override open func didMoveToSuperview() {
super.didMoveToSuperview()
Global.tabBar = self
print("Tab Bar moved to superview")
}
}
Вот как выглядит экран после первого нажатия на ссылку в списке (НЕПРАВИЛЬНО, с пробелом в внизу, где была бы панель вкладок, если бы она не была скрыта):
Вот как выглядит экран после поворота в горизонтальное положение, затем назад в портрет (ПРАВИЛЬНО, синий вид, простирающийся до самого дна):
Есть ли способ вызвать перерисовку или смоделировать вращение и назад? Я пробовал различные решения @State, @EnvironmentObect и @ObservedObject, но ни одно из них не работает.