Попытка перезагрузить collectionView для SupplementaryViewOfKind: UICollectionElementKindSectionHeader с помощью didset

Я пытаюсь обновить изображение профиля моего пользователя после того, как он выбрал новое изображение профиля. Я использую imagepickercontroller, все работает нормально, но изображение не обновляется сразу... приложение должно быть перезапущено, чтобы оно могло показать...

Мне также любопытно, как обновить заголовок, потому что я видел различные примеры здесь, но они для ячеек и элементов, которых у меня нет. У меня просто есть несколько ярлыков и изображение.

в своей ячейке просмотра коллекции я использую didset.

  var user: User? {
    didSet {


        guard let profileImageUrl = user?.profileImageUrl else {return}
        profileImageView.loadImage(urlString: profileImageUrl)    

    }

}

когда я получаю пользователя и заголовок

   fileprivate func fetchUser() {

    let uid = userId ?? (Auth.auth().currentUser?.uid ?? "")


        Database.fetchUserWithUID(uid: uid) { (user) in
        self.user = user
        self.navigationItem.title = self.user?.username
        self.collectionView?.reloadData()

            self.paginatePosts()

     self.collectionView?.collectionViewLayout.invalidateLayout()

    }




   override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {

    let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "headerId", for: indexPath) as! UserProfileHeader

    header.user = self.user
    header.delegate = self

    return header


}


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {


    return CGSize(width: view.frame.width, height: 250)

}

когда я выбираю и выбираю изображение

 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    print("123")
    if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage {
        profileImageView.image = editedImage
        guard let uploadDate = UIImageJPEGRepresentation(editedImage, 0.3) else {return}
        let filename = NSUUID().uuidString
        guard let currentUser = Auth.auth().currentUser?.uid else {return}
        let storageItem = Storage.storage().reference().child("profile_Image").child(filename).child(currentUser)
        storageItem.putData(uploadDate, metadata: nil) { (metadata, err) in
            if let err = err {
                print("err",err)
                return
            }
            storageItem.downloadURL(completion: { (downloadURL, err) in
                 let profileImageUrl = downloadURL?.absoluteString
                print("successfullly stored image edited", profileImageUrl)

                if let profilePhotoUrl  = profileImageUrl {

                    let newphotoprofilevalues = ["profileImageUrl": profilePhotoUrl]
                    Database.database().reference().child("users").child(currentUser).updateChildValues(newphotoprofilevalues, withCompletionBlock: { (err, ref) in
                        print("error", err)
                        return
                    })
                    print("updated")
                    DispatchQueue.main.async {
                        let indextSet = IndexSet(integer: 0)
                        self.collectionView?.reloadSections(indextSet)
self.collectionView?.collectionViewLayout.invalidateLayout()

                    }
                }

0 ответов

Другие вопросы по тегам