title: Programmatically selecting UITableView row from other than main thread
body: <p>I have a UITableView controller that in viewDidLoad I make a network request asynchronously that calls back to a UITableView method.  If the data contains matching info that is preselected by the user, I would like to advance to the next view controller.  Here is the code I'm using in the callback to advance to the next view controller:</p>
  
  <pre><code> //search for row if it exists, then:
   let indexPath = IndexPath(row: r, section: 0)
   DispatchQueue.main.async(execute: {
       self.tableView.reloadData()
       self.tableView.selectRow(at: indexPath, animated: false,     
                               scrollPosition: UITableViewScrollPosition.none)
       self.tableView(self.tableView, didSelectRowAt: indexPath)
   })
  </code></pre>
  
  <p>When I call the self.tableView(didSelectRowAt: indexPath) I get a a run time failure with not a very helpful stack trace.  Is there something I need to be setting prior to programmatically selecting a row of the UITableView?</p>
  
  <p>TIA</p>