当用户返回视图控制器时重新加载集合视图数据
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()
- 检查collectionview是否已经初始化。
- 在
collectionView.reloadData()
之后尝试 collectionView.collectionViewLayout.invalidateLayout()
我试图在每次加载视图时重新加载数据,但它不起作用。下面的代码片段:
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()- 检查collectionview是否已经初始化。
- 在
collectionView.reloadData()
之后尝试
collectionView.collectionViewLayout.invalidateLayout()