[英]How do you reorder a SwiftUI list?
我在 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
設置為 state(或進入視圖 model 並發布),即
struct VitalsDetailView: View {
@State private var filteredVitals = VitalsManager.sharedInstance.vitals?.vitals?.filter({ $0.name == self.vitalName})
var body: some View {
// ... other code
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.