title: UITableViewDelegate heightForRowAtIndexPathUITableViewSource called for top and bottom visible cells only
body: <p>I have a view that displays messages from conversation. It's built using <code>UITableView</code>, <code>UITableViewDelegate</code> and <code>UITableViewDataSource</code> (or <code>UITableViewSource</code> in Xamarin terms).
  I have 17 cells to display, some are larger (images), some are smaller.</p>
  
  <p><code>estimatedHeightForRowAtIndexPath</code> is called for all 17 cells, then followed by 2 calls to 
  <code>heightForRowAtIndexPath</code> - for last cell #16 and for cell #8 (I believe because that is first visible cell). As a result, my conversation tableview stays blank until user scrolls it.</p>
  
  <p>Questions:</p>
  
  <ol>
  <li>Why <code>heightForRowAtIndexPath</code> is called only for 2 cells, and not for all visible?</li>
  <li>How to deal with <code>UITableView</code> being blank?</li>
  </ol>
  
  <p>P.S. I've studied most popular answers about "<code>UITableView</code> blank until scroll" and similar questions. Reloading data in viewWillAppear, or calling it from main dispatch queue didn't help.</p>