如何重新排序SwiftUI列表



我在SwiftUI列表中有一个对象列表,我希望能够根据用户输入筛选该列表。我有这个列表,但我不知道如何调用";刷新";在列表视图

struct VitalsDetailView: View {
var body: some View {
var filteredVitals = VitalsManager.sharedInstance.vitals?.vitals?.filter({ $0.name == self.vitalName})

VStack(alignment: .leading, spacing: 5) {
VStack(alignment: .leading) {
HStack {
Text(NSLocalizedString("VitalsDetails.sortedBy", tableName: nil, bundle: Bundle.main, value: "Sorted By.", comment: ""))
.font(.system(size: 13))
.fontWeight(.medium)
Text(NSLocalizedString("VitalsDetails.dateReported", tableName: nil, bundle: Bundle.main, value: "Date Reported.", comment: ""))
.font(.system(size: 13))
.fontWeight(.light)
Text(displayText)
.font(.system(size: 13))
.fontWeight(.light)
Image(systemName: "arrow.up.arrow.down")
.renderingMode(.template)
.foregroundColor(.blue)
}
.onTapGesture(count: /*@START_MENU_TOKEN@*/1/*@END_MENU_TOKEN@*/, perform: {
//reorder list
if(newToOld) {
filteredVitals = filteredVitals!.sorted(by: {$0.dateOfIssue!.compare($1.dateOfIssue!) == .orderedAscending })
} else {
filteredVitals = filteredVitals!.sorted(by: {$0.dateOfIssue!.compare($1.dateOfIssue!) == .orderedDescending })
}
})
Text("Last Updated Date")
.font(.system(size: 15))
}
.padding()

List(filteredVitals!) { vital in
vitalsCell(vital: vital)
}

}
.frame(minWidth: 0,
maxWidth: .infinity,
minHeight: 0,
maxHeight: .infinity,
alignment: .topLeading)
.background(Color((#colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1))))
.navigationBarTitle(vitalName)
}
}

您可以将filteredVitals设为状态(或进入视图模型并发布(,即

struct VitalsDetailView: View {
@State private var filteredVitals = VitalsManager.sharedInstance.vitals?.vitals?.filter({ $0.name == self.vitalName})
var body: some View {
// ... other code

最新更新