class ViewModel { var content: Observable = Observable(nil) func seedContent() { self.content.value = "Seeded content" } } class ExampleViewController { @IBOutlet weak var contentTextField: UITextField! let viewModel = ViewModel() override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.viewModel.content.bind(for: self, initialFire: true) { newContent in self.contentTextField.text = newContent } self.viewModel.seedContent() } }