title: How can I tell when UITableView has completed ReloadData?
body: <p>I am trying to scroll to the bottom of a UITableView after it is done performing <code>[self.tableView reloadData]</code>.</p>
  <p>I originally had</p>
  <pre><code> [self.tableView reloadData]
   NSIndexPath* indexPath = [NSIndexPath indexPathForRow: ([self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1) inSection: ([self.tableView numberOfSections]-1)];
  
  [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
  </code></pre>
  <p>But then I read that reloadData is asynchronous, so the scrolling doesn't happen since the <code>self.tableView</code>, <code>[self.tableView numberOfSections]</code> and <code>[self.tableView numberOfRowsinSection</code> are all 0.</p>
  <p>It's weird that I am using:</p>
  <pre><code>[self.tableView reloadData];
  NSLog(@&quot;Number of Sections %d&quot;, [self.tableView numberOfSections]);
  NSLog(@&quot;Number of Rows %d&quot;, [self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1);
  </code></pre>
  <p>In the console it returns Sections = 1, Row = -1;</p>
  <p>When I do the exact same NSLogs in <code>cellForRowAtIndexPath</code> I get Sections = 1 and Row = 8; (8 is right)</p>