如何使部分可折叠?

Posted

技术标签:

【中文标题】如何使部分可折叠?【英文标题】:How to make Section collabsible? 【发布时间】:2021-11-05 16:00:17 【问题描述】:

我将我的SectionedFetchResults 排序为List,紧跟今年来自WWDC 的the Intro。 据说,这些部分应该自动折叠,并且它们在预览中:

然而,我的经历却截然不同:

即使我使用的是相同的代码:

var items: SectionedFetchResults<String, Item>

var body: some View 
    List
        ForEach(items)  section in
            Section(header: Text(section.id)) 
                ForEach(section)  item in
                    Text(item.timestamp, formatter: itemFormatter)
                    .onDelete  indexSet in
                        withAnimation 
                          deleteItem(
                            for: indexSet,
                            section: section,
                            viewContext: viewContext)
                        
                    
            
        
    .navigationTitle("Liste")

我在这里错过了什么?

【问题讨论】:

层次结构中有NavigationView吗? 父View里面有,我只是在里面加了sn-p,那里一切正常,有没有办法让List作为NavigationLink的目的地,还是直接外层的NavigationView必需品? @Yrb 【参考方案1】:

SidebarListStyle 添加到您的List

struct ContentView : View 
    var body: some View 
        NavigationView 
            List 
                Section(header: Text("Header")) 
                    Text("Item 1")
                    Text("Item 2")
                    Text("Item 3")
                    Text("Item 4")
                
            .listStyle(SidebarListStyle()) //<-- Here
        
    

默认List 样式已随版本更改,并且可能(?)也受到导航层次结构中父视图的影响。显式添加SidebarListStyle 似乎可以可靠地添加可折叠功能。

还有一个更新的语法:

.listStyle(.sidebar)

【讨论】:

以上是关于如何使部分可折叠?的主要内容,如果未能解决你的问题,请参考以下文章

可折叠部分和每个部分的多个自定义 UITableViewCell

使 Bootstrap 3.0 NavBar 内容始终折叠

带部分的可折叠 UITableView

jQuery Mobile - 仅使可折叠小部件的某些部分处于活动状态

react-native 中带有可折叠部分标题的部分列表

html 手风琴可折叠部分