重新加载数据在 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")

    }

我还尝试在 ViewWillAppearViewDidAppear

上致电 reloadData()

您可以尝试获取 header,例如:

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