Ios 预加载到Swift数组并更新UICollectionView-正确重新加载

Ios 预加载到Swift数组并更新UICollectionView-正确重新加载,ios,swift,uicollectionview,Ios,Swift,Uicollectionview,我想使用“willDisplayCell”为消息视图创建一个延迟加载方法——用户应该向上滚动,获取消息并预先添加消息 func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) { if messagesCollection.count >= 10 { v

我想使用“willDisplayCell”为消息视图创建一个延迟加载方法——用户应该向上滚动,获取消息并预先添加消息

func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {

  if messagesCollection.count >= 10 {

    var counter = 1

    if indexPath == NSIndexPath(forItem: counter, inSection: 0) {
      self.appendSpinner()              
      self.messageSkip = self.messageSkip + 10
      self.getMessages(self, skip: self.messageSkip)
    }       
  }   
}
这将触发Socket.IO事件以获取消息,从而触发

func loadMessages(messages:[Message]) {

  var reverted = messages.reverse() //reverse messages to be most recent on bottom
  self.messagesCollection = self.messagesCollection + messages.reverse()

  //so far its working as intended, all messages line up nicely
  dispatch_async(dispatch_get_main_queue()) {
    self.collectionView.reloadData()
  }
}
这将使我处于一个无限循环中-因为我将始终显示indexPath 1,第二次尝试使用批处理更新会产生相同的结果:

func loadMessages(messages:[Message]) {

  var reverted = messages.reverse()          
  self.messagesCollection = reverted+self.messagesCollection
  var reloadCells = [NSIndexPath]()

  for (index,singleMessage) in enumerate(reverted) {              
    var singleReloadCell = NSIndexPath(forItem: index, inSection: 0)
    reloadCells.append(singleReloadCell)            
  }

  println(reloadCells)          
  self.collectionView.performBatchUpdates({          
    self.collectionView.insertItemsAtIndexPaths(reloadCells as [AnyObject])}, completion: nil)              
  }
}
如有任何提示,将不胜感激