title: tableView.reloadData() ends other animations, how to fix it?
body: <p>I'm working on a todolist with nice animation when I delete a row by right swipe: </p>
  
  <pre><code>func toDoItemDeleted(toDoItem: ToDoItem) {
      let index = (toDoItems as NSArray).indexOfObject(toDoItem)
      if index == NSNotFound { return }
  
      // could removeAtIndex in the loop but keep it here for when indexOfObject works
      toDoItems.removeAtIndex(index)
  
      // use the UITableView to animate the removal of this row
      tableView.beginUpdates()
      let indexPathForRow = NSIndexPath(forRow: index, inSection: 0)
      tableView.deleteRowsAtIndexPaths([indexPathForRow], withRowAnimation: .Fade)
      tableView.endUpdates()
      // refresh gradient effect of rows
      tableView.reloadData()
  }
  </code></pre>
  
  <p>So basically I delete data, then make a remove animation with <code>tableView.deleteRowsAtIndexPaths([indexPathForRow], withRowAnimation: .Fade)</code>, then I decide to fix the gradient effect of all existing rows(background color of rows, up to bottom from red to yellow, deleting a row breaks the gradient effect) by calling <code>reloadData()</code>. </p>
  
  <p>The result is <code>reloadData()</code> happens too quickly before fade animation even begins, thus kills the animation. My questions are:<br>
  1. Why?
  2. How to fix this?</p>