В моем приложении, когда я перехожу на другую вкладку и прокручиваю вниз представление, оно обрезается, и панель навигации не сворачивается, как показано здесь:
Я пытался поставить .edgesIgnoringSafeArea(.top)
, но потом это происходит:
Когда я нажимаю кнопку домой симулятор и возвращаюсь к При нажатии на панель навигации происходит прокрутка, как и предполагалось. Это ошибка с Xcode? В настоящее время я использую XCode 11.4.1, тестирую на симуляторе iPhone 11 Pro Max, но точно такой же результат происходит на моем физическом iPhone 6s Plus.
РЕДАКТИРОВАТЬ: код для представления вкладки следующим образом:
import SwiftUI
struct MenuScreen: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection){
ItemsTab().tabItem{
Image(systemName: "phone.fill")
Text("Items")
}.tag(0)
TestTab().tabItem{
Image(systemName: "phone.fill")
Text("Test")
}.tag(1)
}
.navigationBarTitle("Menu")
// .edgesIgnoringSafeArea(.top)
.navigationBarItems(trailing: NavigationLink(destination:ProfileScreen()){Text("Profile")})
// .padding(.top,1)
.navigationViewStyle(DefaultNavigationViewStyle())
// .navigationBarHidden(true)
}
}
struct MenuScreen_Previews: PreviewProvider {
static var previews: some View {
MenuScreen()
}
}
Представление навигации заключено в экран Spla sh, например, так:
import SwiftUI
struct SplashScreen: View {
@State private var isActive = false
let content = ContentView()
var body: some View {
NavigationView{
VStack{
Text("Loading")
LoopingAnimation()
NavigationLink(destination: content,isActive: $isActive,label: {EmptyView()})
}.onAppear(perform: {
self.goToContentView(time:2.5)
}).navigationBarTitle("My app")
}
}
func goToContentView(time:Double){
DispatchQueue.main.asyncAfter(deadline: .now() + Double(time)){
self.isActive = true
}
}
}
struct SplashScreen_Previews: PreviewProvider {
static var previews: some View {
SplashScreen()
}
}
РЕДАКТИРОВАТЬ 2: я попытался поместить представления навигации в представление вкладки, как показано здесь:
import SwiftUI
struct MenuScreen: View {
var body: some View {
TabView{
NavigationView{
ItemsTab().navigationBarTitle("Items")
}.tabItem{
Image(systemName: "house.fill")
Text("Items")
}
NavigationView{
TestTab().navigationBarTitle("Test")
}.tabItem{
Image(systemName: "phone.fill")
Text("Test")
}
}
.navigationBarHidden(true)
// .navigationBarBackButtonHidden(true)
.frame(alignment: .center)
// .edgesIgnoringSafeArea(.top)
.navigationBarItems(trailing: NavigationLink(destination:ProfileScreen()){Text("Profile")})
// .padding(.top)
.navigationViewStyle(DefaultNavigationViewStyle())
}
}
struct MenuScreen_Previews: PreviewProvider {
static var previews: some View {
MenuScreen()
}
}
Но в то время как это привело к сворачивающейся панели навигации, которая работала даже при переключении вкладок, результат выглядел так: