如何在不加载以前数据的情况下从/向父视图中删除和添加UICollectionView?

时间:2017-11-02 10:09:09

标签: ios swift uicollectionview

使用新数据再次删除和添加Collection视图,但仍显示旧数据。 (不需要重新加载,只需要删除并使用新数据再次添加集合视图)

说明 问题如下:

  • 我正在使用两个自定义布局集合视图,重新加载并对它们进行分页。
  • 布局无效,重新加载和分页顺利进行,没有任何问题。
  • 但是如果切换透视图,比如从QuarterlyView到MonthlyView,我从父视图中删除了整个集合视图,并再次使用新数据显示它。
  • 这就是出现问题的地方,即使在先前输入的2D阵列被新阵列替换之后,新的集合视图仍然显示旧数据。
  • 请注意,在切换视角时,我只需要删除并添加包含新数据的集合视图,而不是重新加载。

这正是我在swift中所做的:

func onSwitchingPerspective(url: String) {

headerArray.removeAll() // REMOVED THE HEADER AND CONTENT ARRAY
contentArray.removeAll()

self.customHeaderCollectionView.removeFromSuperview() // REMOVED THE HEADER AND CONTENT COLLECTION VIEWS
self.customContentCollectionView.removeFromSuperview()


DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async { // NEED GLOBAL QUEUE TO CALL API AND LATER UPDATE UI ON MAIN THREAD

(self.headerArray, self.contentArray) = self.getEventsData(URL: url)

DispatchQueue.main.async {

self.showHeaderCollectionView() // ADDED THE COLLECTION VIEWS AGAIN
self.showContentCollectionView()

self.customContentCollectionView.collectionViewLayout.invalidateLayout() // CODE TO RELOAD BOTH THE COLLECTION VIEWS
self.customContentCollectionView.reloadData()
self.customContentCollectionView.scrollToItem(at: IndexPath(row: 0, section: 0), at: .top, animated: false)
self.customHeaderCollectionView.collectionViewLayout.invalidateLayout()
self.customHeaderCollectionView.reloadData()
self.customHeaderCollectionView.scrollToItem(at: IndexPath(row: 0, section: 0), at: .top, animated: false)
}
}
}

1 个答案:

答案 0 :(得分:0)

没有

self.collectionView.reloadData()

它只显示您以前的数据..必须在

之后重新加载
headerArray.removeAll() // REMOVED THE HEADER AND CONTENT ARRAY
contentArray.removeAll()