Skip to content

Commit 8968ec2

Browse files
committed
收藏筛选
1 parent f319bf5 commit 8968ec2

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

SwiftPamphletApp/InfoOrganizer/Info/InfoListView.swift

+8-1
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ struct InfoListView: View {
1717
@Query(sort: [SortDescriptor(\IOCategory.updateDate, order: .reverse)]) var cates: [IOCategory]
1818
@State private var filterCate = ""
1919
@State var limit: Int = 100
20+
@State var filterStar: Bool = false
2021

2122
var body: some View {
22-
InfosView(filterCateName: filterCate, searchString: searchText, selectInfo: $selectInfo, sortOrder: sortOrder, limit: $limit)
23+
InfosView(filterCateName: filterCate, searchString: searchText, filterStar: filterStar, selectInfo: $selectInfo, sortOrder: sortOrder, limit: $limit)
2324
.navigationTitle("资料列表")
2425
.toolbar {
2526
ToolbarItem(placement: .navigation) {
@@ -36,6 +37,12 @@ struct InfoListView: View {
3637
}
3738
}
3839
}
40+
ToolbarItem(placement: .navigation) {
41+
Toggle(isOn: $filterStar) {
42+
Image(systemName: filterStar ? "star.fill" : "star")
43+
}
44+
.toggleStyle(.button)
45+
}
3946
ToolbarItem(placement: .navigation) {
4047
Menu("Sort", systemImage: "arrow.up.arrow.down.square") {
4148
Picker("排序", selection: $sortOrder) {

SwiftPamphletApp/InfoOrganizer/Info/InfosView.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@ struct InfosView: View {
1414
@Binding var selectInfo: IOInfo?
1515
@Binding var limit: Int
1616

17-
init(filterCateName: String = "", searchString: String = "", selectInfo: Binding<IOInfo?>, sortOrder: [SortDescriptor<IOInfo>] = [], limit: Binding<Int>) {
17+
init(filterCateName: String = "", searchString: String = "", filterStar: Bool = false ,selectInfo: Binding<IOInfo?>, sortOrder: [SortDescriptor<IOInfo>] = [], limit: Binding<Int>) {
1818
var fd = FetchDescriptor<IOInfo>(predicate: #Predicate { info in
1919
if !filterCateName.isEmpty && !searchString.isEmpty {
2020
(info.name.localizedStandardContains(searchString)
2121
|| info.url.localizedStandardContains(searchString)
22-
|| info.des.localizedStandardContains(searchString)) && info.category?.name == filterCateName
22+
|| info.des.localizedStandardContains(searchString)) && info.category?.name == filterCateName && info.star == filterStar
2323
} else if !filterCateName.isEmpty {
24-
info.category?.name == filterCateName
24+
info.category?.name == filterCateName && info.star == filterStar
2525
} else if searchString.isEmpty {
26-
true
26+
info.star == filterStar
2727
} else {
2828
info.name.localizedStandardContains(searchString)
2929
|| info.url.localizedStandardContains(searchString)

0 commit comments

Comments
 (0)