So the problem that i was facing is passing the bool to a viewModifier. I needed to pass the selectedItem as binding in order to work properly
//MARK: - Selectable Cell ViewModifier
struct ExpenseSelectableCell: ViewModifier {
@Binding var selectedItem: Expense?
var expense: Expense
func body(content: Content) -> some View {
content
.overlay {
Color.black.opacity(isSelected() ? 0.2 : 0)
}
}
func isSelected() -> Bool {
guard let selectedItem else { return false }
return selectedItem.id == expense.id
}
}
extension ExpenseCellView {
func selectableCell(selectedItem: Binding<Expense?>) -> some View {
self.modifier(ExpenseSelectableCell(selectedItem: selectedItem, expense: self.expense))
}
}