Ios 预加载到Swift数组并更新UICollectionView-正确重新加载
我想使用“willDisplayCell”为消息视图创建一个延迟加载方法——用户应该向上滚动,获取消息并预先添加消息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
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)
}
}
如有任何提示,将不胜感激