I'm trying pass date use Binding. This is where i'm getting this error next to Text
Cannot convert value of type 'Binding' to expected argument type 'Date'
if I remove style: .date i'm getting another error
Initializer 'init(_:)' requires that 'Binding' conform to 'StringProtocol'
struct ProfileView<ViewModel: ViewModelType>: View {
@ObservedObject var viewModel: ViewModel
@State var selectedDate: Date = Date()
init(with viewModel: ViewModel) {
self.viewModel = viewModel
}
var body: some View {
VStack(alignment: .leading) {
Text( Binding<Date>(
get: { viewModel.selectedDate },
set: { _ in viewModel.setDate(selectedDate) }), style: .date )
}
}
}
final class ViewModel: ViewModelType {
var selectedDate: Date = Date()
func setDate(_ selectedDate: Date) {
self.selectedDate = selectedDate
}
}
DatePicker("", selection: $selectedDate, displayedComponents: .date)
protocol ViewModelType: ObservableObject {
var selectedDate: Date { get }
func setDate(_ selectedDate: Date)
}
I wold like set the date use func setDate()