So I worked out a solution. Its kind of kludgy but it works. I'd appreciate any comments or alternative solutions.
struct CalendarView: View {
@StateObject var selectedDate = SelectedDate()
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \Expense.eName, ascending: true)],
animation: .default)
private var expenses: FetchedResults<Expense>
@State private var listIsVisible:Bool = false
var body: some View {
VStack {
CalendarHelper(interval: DateInterval(start: .distantPast, end: .distantFuture), date: selectedDate)
ForEach(expenses, id:\.self) { exp in
if selectedDate.selectedDate.isInSameDay(as: exp.eDueDate ?? Date()) {
List {
ExpenseRowItemView(eName: exp.eName ?? "",
eCategory: exp.eCategoryName ?? "",
eDueDate: exp.eDueDate ?? Date(),
eImageName: exp.eCategoryName ?? "",
showEdit: false)
}.onAppear(){listIsVisible = true}
} else {
Text("")
.hidden()
.onAppear(){listIsVisible = false}
}
}
if !listIsVisible {
VStack {
GeometryReader { geometry in
Image("emptyView")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: geometry.size.width, height: geometry.size.height)
}
Text ("No Data")
.onAppear(){listIsVisible = false}
Spacer()
}
}
}
}
}
Thanks!