【问题标题】:How to dynamically add elements to UICollectionView as they are loaded from REST service (Swift)如何在从 REST 服务 (Swift) 加载元素时将元素动态添加到 UICollectionView
【发布时间】:2015-07-07 19:15:29
【问题描述】:

当元素从 REST 服务加载到内存中时,如何将元素动态添加到 UICollectionView?

我现在正在打电话

.reloadData()

在我的 UICollectionView IBOutlet 上,但我不认为这是最佳做法。

我已经尝试过 performBatchUpdate,但我没有设法让它工作。

self.photoCollView.performBatchUpdates({
self.photoCollView.insertItemsAtIndexPaths(NSArray(object: photo) as [AnyObject])
                }, completion: nil)

这里我试图将照片对象插入到 photoCollView 中,它是 UICollectionVIew 的 IBOutlet。

@IBOutlet var photoCollView: UICollectionView!

我会很感激一个例子。

【问题讨论】:

  • 我认为现在最好的方法是使用 Instagram 的开源项目“IGListKit”。它完全支持并且非常可定制。在 Github 上搜索 IGListkit。

标签: ios xcode swift rest uicollectionview


【解决方案1】:

我找到了解决方案。 这是我与 UICollectionView 的连接

@IBOutlet var photoCollView: UICollectionView!

我的 Photo 数组是 Photo 对象的简单 Swift 集合

var photos = [Photo]()

这是一个简单的类

class Photo {
    let name: String
    let url: String

    init(name:String, url:String){
        self.name = name
        self.url = url
    }
}

这就是我在不使用 reloadData() 方法的情况下向这个 collectionView 添加元素的方式。

self.photoCollView.performBatchUpdates({
let lastItem = self.photos.count
self.photos.append(photo)
let indexPaths = let indexPaths = map(lastItem..<self.photos.count)
{ 
    NSIndexPath(forItem: $0, inSection: 0) 
}
, completion: nil)

不幸的是,我不知道具体发生了什么,因为我对 Swift 语言还比较陌生。但是据我所知,在添加新元素之前,我会保留数组计数。然后我用两个参数调用 map,旧计数和新计数。在 map 闭包中创建了一个新的NSIndexPath inSection: 0,这就是我想要的,因为现在我只将一个部分放在一起。 我无法理解的这两件事是lastItem..&lt;self.photos.count&gt;forItem: $0 所做的。

【讨论】:

    【解决方案2】:

    有很多方法,如果您进行少量更改,您可以使用 reloadData() 函数。它们有多小,你需要做一个性能测试。

    另一种方法是执行批量更新,它们可以少量“分段”,您无需在一个输入中输入来自其余服务的所有数据。 在CollectionView Programing Guide by Apple中查看更多信息

    顺便说一句,reload data 可以很好地处理它,这取决于你和你的需求。

    【讨论】:

    • 我尝试使用“performBatchUpdate”,但我遗漏了一些东西,因为它不起作用。用示例更新了帖子。
    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    相关资源
    最近更新 更多