title: How to setup asynchronous image loading using VIPER artechiture?
body: <p>The nature of the app is a UITableView that displays UIImages on every row as the user scrolls down the tableView. How should i load the image into the cell without breaking VIPER architecture?</p>
  
  <pre><code>--VC code--
  
  func cellForRowAtIndexPath...... {
      var cell = dequeueCellWithIdentifier.....
  
      //Method 1
      cell.image = outputInteracter.loadImage("someHttpImageLink")
  
      //Method 2. - using a completion block
      outputInteracter.loadImage(anImage -&gt; {
          cell.image = anImage
      }
  }
  </code></pre>
  
  <p>Both methods above seem to break VIP, since the presenter is not involved and no structures are passed between boundaries of V-I-P</p>
  
  <p>How would you suggest getting the UIImages of the TableView to make asynchronous calls to get the images downloaded (without blocking main thread) using VIP? I can make the call pattern be like this, but I am confused on step #4: </p>
  
  <ol>
  <li>VC --> interacterOutput.loadImage("someLink")</li>
  <li>Interacter --> does the work to get the image, and send UIimage to presenter</li>
  <li>Presenter --> UIImage is already in correct format for VC, so pass the information back to VC</li>
  <li>VC --> How should i best setup the code so that the cell knows that its image is ready? I would not want to reload the whole tableView</li>
  </ol>
  
  <p>Any help would be greatly appreciated.</p>