SwiftUI-如何使用日期选择器筛选列表的用户



我正在用SwiftUI创建一个应用程序。我有一个数据数组和一个显示它们的列表。数组包含各种元素,这些元素包含每个元素的用户名和日期。类似的东西:

struct History: Identifiable {
let id = UUID()
var userName: String
var date:String
}
var itemsHistory = [
History(userName: "Liam", date: "2020-06-17" ),
History(userName: "Noah", date: "2019-04-14" ),
History(userName: "James", date: "2022-04-13" ),
]

List {
ForEach(itemsHistory) { item in
VStack(alignment: .leading) {
Text(item.userName)
.font(.headline)
Text(item.date)
.foregroundColor(.secondary)
}
}
}
}

我的问题是:如何使用一个或两个datapickers仅显示特定日期范围内的用户?例如:从datepicker中,我选择2020-01-01和2020-02-12之间的范围,列表必须只显示日期在该范围内的用户。

非常感谢。这是我第一次在这里写作。

首先将date声明为Date,比较更容易

struct History: Identifiable {
let id = UUID()
var userName: String
var date: Date
}

从分拣机获取开始和结束日期

@State private var startDate = Date()
@State private var endDate = Date()
DatePicker(
"Start Date",
selection: $startDate,
displayedComponents: [.date]
)
DatePicker(
"End Date",
selection: $endDate,
displayedComponents: [.date]
)

然后过滤项目

let filteredItems = endDate < startDate ? [] : itemsHistory.filter { item in
(startDate...endDate).contains(item.date)
}

最新更新