转到选项卡视图中的另一个选项卡时,导航栏不显示

时间:2020-04-24 03:01:58

标签: ios xcode scroll swiftui tabview

在我的应用中,当我导航到另一个选项卡并向下滚动视图并被切断时,导航栏不会折叠,如下所示:

enter image description here

我试图放.edgesIgnoringSafeArea(.top),但随后发生了这种情况:

enter image description here

当我按下主屏幕按钮模拟器并导航回该应用程序时,按预期滚动时导航栏将折叠。这是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()
    }
}

导航视图包裹在初始屏幕中,如下所示:

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:我试图将导航视图放在tabview中,如下所示:

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()
    }
}

但是,即使导航栏崩溃了,即使切换选项卡也可以正常工作,结果如下:enter image description here

1 个答案:

答案 0 :(得分:0)

通过将.displayMode内的.navigationBarTitle设置为.inline,使导航栏在选项卡屏幕中保持折叠状态,类似于您导航到应用商店中选项卡中其他类别时发生的情况< / p>

屏幕截图:

enter image description here

相关问题