[NavigationBar在标签视图中转到另一个标签时不显示

问题描述 投票:0回答:1

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

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

ios xcode scroll swiftui tabview
1个回答
0
投票

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

截屏:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.