SwiftUI 列表正在使用 .navigationBarItems 进行剪辑 [重复]

Posted

技术标签:

【中文标题】SwiftUI 列表正在使用 .navigationBarItems 进行剪辑 [重复]【英文标题】:SwiftUI List is clipping using .navigationBarItems [duplicate] 【发布时间】:2020-11-12 16:57:59 【问题描述】:

当我添加 .navigationBarItems 修饰符列表时,列表会被剪裁并且不会像这样占用所有空间

应该像这张照片(没有 .navigationBarItems):

代码

struct PatientsListView: View 
    @ObservedObject var listData = PatientsListViewModel()
    var body: some View 
        NavigationView
            Group 
                if listData.patientsList.count > 0
                    List
                        ForEach(Array(listData.patientsList))   patient in
                            NavigationLink(destination: PatientsDetailView(patient: patient),
                                           label: 
                                            PatientsListRow(patient: patient)
                                           )
                        
                    
                
                else if listData.patientsList.count == 0 
                    Text("Самое время добавить пациентов!").foregroundColor(.gray)
                    
                
                else if listData.isLoading 
                    ProgressView()
                
            
            .navigationTitle("Пациенты")
            .navigationBarTitleDisplayMode(.large)
            .navigationBarItems(trailing: NavigationLink(destination: PatientCreateView(), label: 
                Image(systemName: "plus").foregroundColor(.white)
            ))
            
            
            
        
        .onAppear(perform: 
            listData.fetchPatients()
        )
    

【问题讨论】:

【参考方案1】:

这是默认行为。如果你喜欢,你可以明确设置 List 样式,比如

List
    ForEach(Array(listData.patientsList))   patient in
        NavigationLink(destination: PatientsDetailView(patient: patient),
                       label: 
                        PatientsListRow(patient: patient)
                       )
    

.listStyle(PlainListStyle())        // << here !!

【讨论】:

以上是关于SwiftUI 列表正在使用 .navigationBarItems 进行剪辑 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 列表正在使用 .navigationBarItems 进行剪辑 [重复]

SwiftUI 列表正在工作,但选择器不起作用

如何使用@EnvironmentObject 在 SwiftUI 中自动填充和更新列表?

SwiftUI 使用 CoreData 从列表中编辑项目

SwiftUI 导航链接

如何使用 SwiftUI 将数组绑定到列表