我试图在滚动列表时在屏幕上保留节标题,但我的代码不起作用。 我正在关注 这个 Apple 教程,但我的代码对保留在屏幕上的标题没有影响。
var body: some View {
NavigationSplitView {
List {
LazyVStack(pinnedViews: .sectionHeaders) {
ForEach(searchDates, id: \.self) { date in
Section(header: Text(date)) {
ReceiptSection(searchResults: searchResults, date: date)
}
}.onDelete(perform: deleteItems)
}
}
我尝试移动插入 LazyVStack 的位置,但这也没有效果。谁能告诉我如何修复它?
惰性堆栈应该位于
ScrollView
内,而不是 List
内。事实上,他们并不“懒惰”除非他们处于ScrollView
。另一方面,List
会将其视为一个巨大的列表行。
ScrollView {
LazyVStack(pinnedViews: .sectionHeaders) {
ForEach(searchDates, id: \.self) { date in
Section(header: Text(date)) {
ReceiptSection(searchResults: searchResults, date: date)
}
}.onDelete(perform: deleteItems)
}
}
您还可以考虑使用具有粘性标题的
ListStyle
。例如iOS 上的 .plain
风格。 NavigationSplitView
设计为由选择 List
驱动 - 当选择列表行时,它会导航到详细信息视图。