工具栏未正确显示 SwiftUI

Posted

技术标签:

【中文标题】工具栏未正确显示 SwiftUI【英文标题】:Toolbar does not appear properly SwiftUI 【发布时间】:2020-11-19 15:29:33 【问题描述】:

在我的 GeneralView 中,我有一个 NavigationView 和一个 Tab View。 在每个 tabItem 中,我使用一些 ZStack 进行导航(使用 zIndex,隐藏和显示项目)

随机前导和尾随项目未正确显示且无法单击。 见下文,屏幕顶部的后退按钮未满。但我选择相同的按钮继续“Coureur1View” 信息:我对这个导航没有任何其他问题。

在我的一般视图中:

 .toolbar 
            ToolbarItemGroup(placement: .principal) 
                TitleBarView().environmentObject(objCourse)
            
        .navigationBarItems(leading: TitleBarLeadingView(), 
                          trailing: TitleBarTrailingView())

TitleBarView(原则)没有问题,但前导和尾随 在我的 TitleBarLeadingView 中:

struct TitleBarLeadingView: View 
    @EnvironmentObject var objGroupe : GroupeActuel
    @EnvironmentObject var objCourse : CourseActuelle
    @EnvironmentObject var zindex : Zindex

var body: some View 
    HStack 
        if zindex.selectedTab > 0 
             if zindex.detailCoureurVisible 
                Button
                    zindex.detailCoureurVisible = false
                 label : 
                    Image(systemName: "chevron.backward")
                    Text("Back")
                .foregroundColor(.orange)
                
            else
                EmptyView()
            else
                EmptyView()
            
    

【问题讨论】:

【参考方案1】:

提供的快照是不可测试的,所以只是想法 - 尝试强制重新创建导航栏项目。它可以是一些已知的更改值(我在 gif 上看到标题已更改),但也可以仅通过 UUID():

.navigationBarItems(leading: TitleBarLeadingView().id(UUID()), 
                  trailing: TitleBarTrailingView().id(UUID()))

注意:make .id(param) 更可取,因为根据 UUID,每次刷新都会重新创建它。

【讨论】:

以上是关于工具栏未正确显示 SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:如何使用语义放置呈现多个 ToolbarItem?

使用两个控制点时,SwiftUI 圆形滑块问题未显示正确的笔划

为啥使用 SwiftUI 按钮的图像背景不显示在工具栏中?

在浏览器上执行放大和缩小时工具提示未正确显示

SwiftUI 列表未使用 ForEach 正确更新

SwiftUI:如何只为 iPhone 显示一些工具栏按钮