Мой вопрос, вероятно, является результатом недопонимания, но я не могу понять его, поэтому вот оно:
При использовании такого компонента, как TextField или любого другого компонента, требующего привязки в качестве входных данных
TextField(title: StringProtocol, text: Binding<String>)
И View с ViewModel, я, естественно, думал, что могу просто передать свои свойства ViewModel @Published
в качестве привязки:
class MyViewModel: ObservableObject {
@Published var title: String
@Published var text: String
}
// Now in my view
var body: some View {
TextField(title: myViewModel.title, text: myViewModel.$text)
}
Но я, очевидно, не могу, так как издатель не может действовать как обязательный. Насколько я понимаю, только свойство @State
может действовать таким образом, но разве все свойства @State
не должны существовать только в представлении, а не в модели представления? Или я мог бы сделать что-то подобное:
class MyViewModel: ObservableObject {
@Published var title: String
@State var text: String
}
И если я не могу, как я могу перенести информацию в мою модель представления при обновлении моего текста?