title: tableView jumping scrolling after reloadData
body: <p>My <code>tableView</code> scrolling is jumping when I reload <code>tableView</code> with new data. Here is the code for <code>cellForRowAtIndexPath</code>:</p>
  
  <pre><code>func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell {
       let section = indexPath.section
       let index = indexPath.row
       let info = data[sections[section]]![index] as ConversationMessage
  
       if info.from == .Me {
           var cell: ConversationDialogMeTableCell = tableView.dequeueReusableCellWithIdentifier("meCell", forIndexPath: indexPath) as! ConversationDialogMeTableCell
           cell.backgroundColor = UIColor.clearColor()
           cell.selectionStyle = .None
           cell.messageLabel.text = info.text
           return cell
       } else if info.from == .Other {
           var cell: ConversationDialogOtherTableCell = tableView.dequeueReusableCellWithIdentifier("otherCell", forIndexPath: indexPath) as! ConversationDialogOtherTableCell
           cell.backgroundColor = UIColor.clearColor()
           cell.selectionStyle = .None
           cell.personName.textColor = UIColor(hex: 0x6d6d6d)
           cell.messageContainerView.backgroundColor = UIColor(hex: 0x6d6d6d)
           cell.messageContainerView.layer.cornerRadius = 5
           cell.messageContainerView.clipsToBounds = true
           Alamofire.request(.GET, info.personImage).response {
               (request, response, data, error) in
               let image = UIImage(data: data!, scale: 1)!
               cell.personImage.image = image
               cell.personImage.contentMode = UIViewContentMode.ScaleAspectFill
               cell.personImage.layer.cornerRadius = cell.personImage.frame.height / 2
               cell.personImage.clipsToBounds = true
           }
           cell.personName.text = info.personName
           cell.personMessage.text = info.text
           return cell
      }
      return UITableViewCell()
  }
  </code></pre>
  
  <p>For the first load scrolling is smooth, but if I will add new data in my <code>tableView</code> and call <code>reloadData()</code> the scrolling is jumping when new cells are shown.</p>
  
  <p>Here is the code where I insert new data to my model:</p>
  
  <pre><code>func client(client: PubNub!, didReceiveMessage message: PNMessageResult!) {
      if message.data.subscribedChannel == self.channel {
          if let messageInfo: AnyObject = message.data.message {
              let date = (messageInfo["date"] as! String).getDateString()
              let messageText = messageInfo["message"] as! String
              let from: ConversationMessage.sendFromType = (messageInfo["userID"] as! String) == self.userID ? .Me : .Other
              let image = messageInfo["userPhoto"] as! String
              let name = messageInfo["userName"] as! String
              if data[date] != nil {
                  data[date]!.append(ConversationMessage(text: messageText, from: from, personImage: image, personName: name, date: messageInfo["date"] as! String))
              } else {
                  data[date] = [ConversationMessage(text: messageText, from: from, personImage: image, personName: name, date: messageInfo["date"] as! String)]
              }
              for section in self.sections {
                  self.data[section]! = sorted(self.data[section]!) { Utils.compareDateTime($0.date, with: $1.date, order: .OrderedAscending) }
              }
              tableView.reloadData()
              tableViewScrollToBottom(false)
          }
      }
  }
  </code></pre>
  
  <p>Maybe it happens because of function to scroll <code>tableView</code> to bottom:</p>
  
  <pre><code>func tableViewScrollToBottom(animated: Bool) {
      let delay = 0.1 * Double(NSEC_PER_SEC)
      let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
  
      dispatch_after(time, dispatch_get_main_queue(), {
         let numberOfSections = self.tableView.numberOfSections()
         let numberOfRows = self.tableView.numberOfRowsInSection(numberOfSections - 1)
         if numberOfRows &gt; 0 {
             let indexPath = NSIndexPath(forRow: numberOfRows - 1, inSection: (numberOfSections - 1))
             self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: UITableViewScrollPosition.Bottom, animated: animated)
         }
      })
  }
  </code></pre>
  
  <p>One more thing. Should I cache uploaded images? Maybe this is causing jumping scroll. Can someone help me to solve my issue?</p>