我在ForEach
中有一个if语句,条件是使用我的PreviewProvider
中的数据,最后只列出了所有内容。我正在努力了解在PreviewProvider
中使用什么适当的数据,或者仅显示星期一的数据。
这是代码的一部分
struct RunClubs: View {
@State var showSearch = false
@State private var searchText: String = ""
@Binding var showRuns: Bool
@State var tap = false
var weeklyrunclub: WeeklyRunClub
var body: some View {
ZStack {
VStack{
VStack {
SearchBar(searchText: $searchText)
}
List{
Text("Run Clubs")
.font(.title).bold()
Section(header: Text("Monday")
.font(.title)) {
ForEach(runClubData.filter ({
searchText.isEmpty ? true : $0.name.contains(searchText)
})) { item in
if self.weeklyrunclub.category == "Monday" {
ClubViews(weeklyrunclub: item)
}
}
}
}
.padding(.top, 15)
}
.padding(.top, 65)
// MARK: Dismiss RunClubs
HStack {
Spacer()
VStack {
Image(systemName: "xmark")
.font(.system(size: 16, weight: .medium))
.foregroundColor(.white)
.frame(width: 36, height: 36)
.background(Color.black)
.clipShape(Circle())
.scaleEffect(tap ? 1.2 : 1)
Spacer()
}
.padding(.trailing, 25)
.padding(.top, 13)
.onTapGesture {
self.tap = true
self.showRuns = false
print(self.showRuns)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
self.tap = false
}
}
}
}
}
}
struct RunClubs_Previews: PreviewProvider {
static var previews: some View {
RunClubs(showRuns: .constant(true),
weeklyrunclub: WeeklyRunClub.init(name: "Run Club", location: "Charlotte, NC", date: "Monday", category: "Monday" ))
}
}
struct ClubViews: View {
var weeklyrunclub: WeeklyRunClub
var body: some View {
VStack(alignment: .leading, spacing: 8.0) {
HStack {
Text(weeklyrunclub.name)
.font(.headline)
Spacer()
Text(weeklyrunclub.date)
}
Text(weeklyrunclub.location)
.font(.subheadline)
}
}
}
struct WeeklyRunClub: Identifiable {
var id = UUID()
var name: String
var location: String
var date: String
var category: String
}
let runClubData = [
WeeklyRunClub(name: "Joggers for Lagers", location: "Amor Artis Brewery, Fort Mill", date:"Monday at 6:30 PM", category: "Monday"),
WeeklyRunClub(name: "Old Armor Run Club", location: "Kannapolis", date:"Monday at 6:00 PM", category: "Monday"),
WeeklyRunClub(name: "Round Town Club", location: "", date: "Monday at 6:30 PM", category: "Monday"),
WeeklyRunClub(name: "Taproom Run Club", location: " ", date:"Monday at 6:30 PM", category: "Monday"),
WeeklyRunClub(name: "Heist Brewery Running Club ", location: "", date:" Monday at 6:30 PM", category: "Monday"),
WeeklyRunClub(name: "Monday Run at Charlotte Running Company", location: "Dilworth", date:" Monday at 6:30 PM", category: "Monday"),
WeeklyRunClub(name: "P.U.B. Run at Ultra Running Company", location: "South End", date:"Monday at 6:30 PM", category: "Monday"),
WeeklyRunClub(name: "Pizza Peel Run Club", location: "Matthews", date:"Monday at 6:30 PM", category: "Monday"),
WeeklyRunClub(name: "Clean Juice Run Club", location: "", date:"Monday at 6:30 PM", category: "Tuesday"),
WeeklyRunClub(name: "Pinhouse Bowl and Run Club", location: "", date:"Monday at 6:30 PM", category: "Tuesday"),
WeeklyRunClub(name: "Abari Track Club", location: "", date:"Tuesday at 6:45 PM", category: "Tuesday")
]
答案 0 :(得分:0)
您似乎需要在ForEach item
而不是self.weeklyrunclub
上应用支票:
ForEach(runClubData.filter {
searchText.isEmpty ? true : $0.name.contains(searchText)
}) { item in
if item.category == "Monday" { // replace `self.weeklyrunclub` with `item`
ClubViews(weeklyrunclub: item)
}
}