当用户返回视图控制器时重新加载集合视图数据

Reload collection view data when user comes back to view controller

我试图在每次加载视图时重新加载数据,但它不起作用。下面的代码片段:

override func viewDidLoad() {
    super.viewDidLoad()
    // Register cell classes
    self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "cell")
    self.collectionView!.reloadData()
}

但是没用。

view did load方法只在view被实例化时调用。它似乎没有被触发,因为您的转换没​​有取消实例化集合视图单元格。 (例如,您可能正在从流行音乐中回来)

要强制重新加载数据,您可以尝试将同一行代码放在视图下,每次将视图呈现给用户时都会触发该代码。

尝试做:

override func viewWillAppear() {
    super.viewWillAppear()
    self.collectionView.reloadData()
}

通常顺序是,viewDidLoad、viewWillAppear,然后是 viewDidAppear。

上面的代码应该可以修复它。如果没有,请告诉我。

试试这个

override func viewWillAppear() {
    super.viewWillAppear()
    self.collectionView!.reloadData()
}

这将在每次您的视图控制器出现时重新加载您的集合视图。另外,你不需要在 viewDidLoad()

中写 reloadData()
  1. 检查collectionview是否已经初始化。
  2. collectionView.reloadData()
  3. 之后尝试 collectionView.collectionViewLayout.invalidateLayout()