【问题标题】:Navigationbartitle showing a white boxNavigationbartitle 显示一个白框
【发布时间】:2021-06-21 13:39:47
【问题描述】:

我正在开发一个应用程序,但我在使用 navigationTitle 和工具栏按钮时遇到问题,它在我的登录和文档屏幕上的标题上方显示一个白框(见图)我的其他导航标题上我没有,有人知道解决方案吗? 提前谢谢你。

文档屏幕代码:

struct Homescreen : View {
    
    var body: some View{
        
        List{
            Text("A List Item")
            Text("A Second List Item")
            Text("A Third List Item")
                
            
            
        }
        .navigationTitle("Documents")
        .toolbar {
            Button(action: {
                
                try! Auth.auth().signOut()
                UserDefaults.standard.set(false, forKey: "status")
                NotificationCenter.default.post(name: NSNotification.Name("status"), object: nil)
                
            }) {
                
                Image(systemName: "person.badge.minus")
            }
}
}
}

部分登录屏幕代码。

struct ContentView: View {
    var body: some View {
        
        Home()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

struct Home : View {
    
    @State var show = false
    @State var status = UserDefaults.standard.value(forKey: "status") as? Bool ?? false
    
    var body: some View{
        
        NavigationView{
            
            VStack{
                
                if self.status{
                    
                    Homescreen()
                }
                else{
                    
                    ZStack{
                        
                        Login(show: self.$show)
                    }
                }
            }
            .navigationBarTitle("Log in")
            .onAppear {
                
                NotificationCenter.default.addObserver(forName: NSNotification.Name("status"), object: nil, queue: .main) { (_) in
                    
                    self.status = UserDefaults.standard.value(forKey: "status") as? Bool ?? false
                }
            }
        }
    }
}

【问题讨论】:

  • 看起来您可能在另一个 NavigationView 中嵌入了一个 NavigationView。只保留第一个。
  • 你现在需要做什么来解决它吗?
  • 从 struct Home 中删除 NavigationView。你必须有一个NavigationView 像 TabView 一样的早期视图
  • 它适用于登录屏幕,但现在我的文档屏幕上现在有一个导航磁贴登录和文档。
  • 我修好了,非常感谢!

标签: swift xcode swiftui uinavigationbar


【解决方案1】:

在 SwiftUI 中,导航栏有两种样式.navigationBarTitleDisplayMode(.large).navigationBarTitleDisplayMode(.inline)。标题上方的白框是.large 风格的正常行为。如果您想要自定义的导航栏比描述的选项更多,您需要创建自己的导航栏。

你的代码在我运行它们时的样子...... Example

【讨论】:

    猜你喜欢
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 2015-03-13
    相关资源
    最近更新 更多