如何垂直定位两个列表,以便它们之间只有一点空间? 我有一个设置,我有两个披露组和下面的项目列表: struct Homeview:查看 { @State Private var selectedItem:字符串? VAR身体:某些视图 { vs ...

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

struct HomeView: View { @State private var selectedItem: String? var body: some View { VStack { List { DisclosureGroupWithButton(title: "Group 1", items: ["Item 1", "Item 2", "Item 3"]) DisclosureGroupWithButton(title: "Group 2", items: ["Item A", "Item B", "Item C"]) } .listStyle(SidebarListStyle()) List(selection: self.$selectedItem) { ForEach(["Option 1", "Option 2", "Option 3"], id: \.self) { item in Text(item) .tag(item) } } .frame(maxHeight: .infinity) } } } struct DisclosureGroupWithButton: View { let title: String let items: [String] @State private var isExpanded: Bool = false var body: some View { DisclosureGroup(isExpanded: self.$isExpanded) { ForEach(items, id: \.self) { item in Text(item) } Button("Add Item") { print("\(title) button tapped") } .buttonStyle(.bordered) .padding(.top, 5) } label: { Text(self.title) } } } 我想做到这一点,所以底部的列表几乎直接直接在两个披露组下方,略有空间将它们分开(没有空白空间),但是我很难做到这一点。明显的解决方案是在列表之后使用垫片,但由于某种原因,这无能为力。我把所有元素的框架都弄乱了,没有任何改变。我还注意到,即使我将其剥离为简单的两个列表,也会发生相同的行为:enter image description here struct HomeView: View { @State private var selectedItem: String? var body: some View { List { ForEach(["Option 1", "Option 2", "Option 3"], id: \.self) { item in Text(item) .tag(item) } } List(selection: self.$selectedItem) { ForEach(["Option 1", "Option 2", "Option 3"], id: \.self) { item in Text(item) .tag(item) } } } }

没有人知道如何实现这一目标?

它似乎只需要一个带有2个部分的单个
List

List(selection: self.$selectedItem) { Section { DisclosureGroupWithButton(title: "Group 1", items: ["Item 1", "Item 2", "Item 3"]) DisclosureGroupWithButton(title: "Group 2", items: ["Item A", "Item B", "Item C"]) } .selectionDisabled() Section { ForEach(["Option 1", "Option 2", "Option 3"], id: \.self) { item in Text(item) .tag(item) } } } // .listSectionSpacing(...) // if you want to adjust the spacing .listStyle(.sidebar)
swift listview swiftui
1个回答
0
投票
I将第一部分放在第一节中,以防止从第一部分选择事物。如果第一部分也可以选择,则可以将其使用的枚举用作选择类型的枚举,并相应地更改。例如

.selectionDisabled()

    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.