删除对象后重新加载 UICollectionViewController?

Posted

技术标签:

【中文标题】删除对象后重新加载 UICollectionViewController?【英文标题】:Reloading a CollectionViewController after deleting an object? 【发布时间】:2017-05-08 20:31:48 【问题描述】:

我有一个collectionView 从网络中提取数据,然后用户删除了一个对象,我想显示剩余的对象。由于过去的噩梦是删除索引中的对象并处理与网络版本同步的本地数据,我可以通过调用新的调用来获取新的网络数据(减去已删除的对象),因为它并没有那么多。话虽如此,就在仍然存在的collectionView 中显示新数据而言,最好的方法是什么?我有点想扔掉collectionView(带有旧数据)并添加一个新数据,但是没有这样的方法可以做这样的事情吗?或者只是刷新整个collectionViewController?试图在这里找出首选方法而不是 hack =)

func getPinsCheckLinksAndStartLoadAnimation() 

        PinterestRequest().getPinterstPins(board: board)  (result) in

            LinkCheck().checkLinks(pins: result, handler:  (testPinsWithBrokenLinks, error) in

                self.pinsWithBrokenLinks = testPinsWithBrokenLinks
            )

            self.startAnimating(self.view.frame.size, message: "Checking Pins...", messageFont: UIFont.boldSystemFont(ofSize: 16), type: .ballScaleMultiple, color: UIColor.red, padding: CGFloat(0), displayTimeThreshold: nil, minimumDisplayTime: nil, backgroundColor: UIColor.clear, textColor: UIColor.black)  //see https://github.com/ninjaprox/NVActivityIndicatorView#defaults
        

    

【问题讨论】:

我只是用更新的数据重新加载collectionView。 唯一的问题是我使用了加载动画,然后它会显示在旧的 collectionView 单元格上,直到它重新加载。 你的意思是像UIRefreshControl?发布您的一些代码,以便我可以更好地了解。 是自定义库,上面添加了我删除对象时调用的函数 你知道我想得越多你是对的,我认为从旧的collectionView 到新的 (-1) 会很糟糕,但它确实不是t,我想我就这样处理吧。谢谢! 【参考方案1】:

我认为,如果您不想保持本地版本同步并删除索引处的单元格,那么最好的选择是执行 collectionView.reloadData()。

最好的方式和我这样做的方式是使用 Realm。这是一个本地数据库,我与 Firebase 或我自己的服务器保持同步。它只需在本地删除对象即可删除索引处的单元格,然后您可以通过 api 调用删除服务器上的对象。

但除此之外,您只需要重新加载整个 collectionView。

【讨论】:

以上是关于删除对象后重新加载 UICollectionViewController?的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView reloadSection 不会从视图层次结构中删除旧视图

在布局更改的同时重新加载/动画 UICollectionView

警告 Swift 后重新加载表

加载重新加载页面时如何删除数组中的所有对象?

jQuery DataTable 删除数据后重新加载

删除记录/数据后如何重新加载数据表?