title: How viewmodel and view communicates?
body: <p>recently i was reading about dependency inversion principle, which states that high level module should not depend low level module, they both should depends upon abstraction.</p>
  
  <pre><code>protocol ViewControllerProtocol {
      func saveButtonTapped()
  }
  
  struct ViewModel : ViewControllerProtocol{
      func saveButtonTapped() {
          //save data...
          print("forward save request")
      }
  
       func statusArrived(){
         // inform viewcontroller about updating UI
      }
  }
  
  
  class ViewController: UIViewController {
  
      private var  vm : ViewControllerProtocol?
  
      required init(viewmodel : ViewModel){
          self.vm = viewmodel
          super.init(nibName: nil, bundle:nil)
      }
  
      @IBAction func btnSaveTapped(_ sender: Any) {
          vm?.saveButtonTapped()
      }
  
  
  }
  </code></pre>
  
  <p>following dependency inversion principle, i am able to communicate between viewcontroller -> Viewmodel.</p>
  
  <p>my question is, how to communicate in reverse direction ? ie. form view model to view controller ?
  i am thinking, by creating another protocol, and viewcontroller implements that protocol....</p>
  
  <p>how to communicate in reverse direction ? ie. form view model to view controller ?</p>