重新加载数据在 Swift 中的 HeaderView 中不起作用
Reload data not working in HeaderView in Swift
我无法更新 CollectionView
的 Header 视图的数据。此 header 视图是 UICollectionReusableView
.
的子类
我试图在不同的地方调用一个方法来重新加载这些数据,但其中 none 个正在触发更新。要查看更新后的数据,我必须关闭并再次打开该应用程序。
Collection 查看:
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
guard kind == UICollectionView.elementKindSectionHeader else {
fatalError("Unexpected element kind.")
}
let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "ProfileHeaderView", for: indexPath) as! ProfileHeaderView
header?.reloadData()
// headerView.userNameLabel.text = defaults.string(forKey: "username")
return headerView
}
Header 查看:
class ProfileHeaderView: UICollectionReusableView {
@IBOutlet weak var userNameLabel: UILabel!
func reloadData() {
let defaults = UserDefaults.standard
usernameTextLabel.text = defaults.string(forKey: "username")
}
我还尝试在 ViewWillAppear
和 ViewDidAppear
上致电 reloadData()
您可以尝试获取 header,例如:
func reloadHeaderData() {
guard let header = collectionView.supplementaryView(forElementKind: UICollectionView.elementKindSectionHeader, at: YourIndexPath) as? ProfileHeaderView else { return }
header.reloadData()
}
我无法更新 CollectionView
的 Header 视图的数据。此 header 视图是 UICollectionReusableView
.
我试图在不同的地方调用一个方法来重新加载这些数据,但其中 none 个正在触发更新。要查看更新后的数据,我必须关闭并再次打开该应用程序。
Collection 查看:
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
guard kind == UICollectionView.elementKindSectionHeader else {
fatalError("Unexpected element kind.")
}
let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "ProfileHeaderView", for: indexPath) as! ProfileHeaderView
header?.reloadData()
// headerView.userNameLabel.text = defaults.string(forKey: "username")
return headerView
}
Header 查看:
class ProfileHeaderView: UICollectionReusableView {
@IBOutlet weak var userNameLabel: UILabel!
func reloadData() {
let defaults = UserDefaults.standard
usernameTextLabel.text = defaults.string(forKey: "username")
}
我还尝试在 ViewWillAppear
和 ViewDidAppear
reloadData()
您可以尝试获取 header,例如:
func reloadHeaderData() {
guard let header = collectionView.supplementaryView(forElementKind: UICollectionView.elementKindSectionHeader, at: YourIndexPath) as? ProfileHeaderView else { return }
header.reloadData()
}