重新加载数据在 Swift 的 HeaderView 中不起作用



我无法更新CollectionView的标题视图的数据。此标头视图是UICollectionReusableView的子类。

我尝试调用一种在不同位置重新加载此数据的方法,但没有一个触发更新。要查看更新的数据,我必须关闭并再次打开该应用程序。

收藏视图:

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
}

标题视图:

class ProfileHeaderView: UICollectionReusableView {
@IBOutlet weak var userNameLabel: UILabel!
func reloadData() {
let defaults = UserDefaults.standard
usernameTextLabel.text = defaults.string(forKey: "username")
}

我还试图打电话给reloadData()ViewWillAppearViewDidAppear

您可以尝试获取标头,例如:

func reloadHeaderData() {
guard let header = collectionView.supplementaryView(forElementKind: UICollectionView.elementKindSectionHeader, at: YourIndexPath) as? ProfileHeaderView else { return }
header.reloadData()
}

最新更新