J'ai un UICollectionViewController
personnalisé avec un en-tête personnalisé et des cellules.Récupération des données de l'en-tête à la vue du parent
J'ai implémenté un protocole, dans lequel collecter responseView, de cette façon, je sais dans la collectionView quand un objet a été accédé (bouton presse par exemple) dans la classe d'en-tête, jusqu'ici tout va bien.
Ce que je veux le faire que lorsque je tape sur un bouton, dans le collectionView
, je dois l'en-tête pour récupérer des données qu'il possède au collectionView
permet de dire que je tape sur un bouton Enregistrer dans la collectionView
et pour exécuter une sauvegarde, j'ai besoin des données actuelles de l'en-tête.
Comment puis-je y parvenir?
est ici une partie du code actuel:
import UIKit
// collection view class
class EditUserProfileHeader: UICollectionViewCell, UITextViewDelegate {
var delegate: CustomHeaderDelegate?
//(... some default code ...)
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: headerId, for: indexPath) as! CustomHeader
header.delegate = self
return header
}
// header delegate conform
func didTapPhoto() {
// this fires everytime the button is pressed inside the header
print("didTapPhoto was tapped inside the header")
}
func didTapSave() {
//here I need the header's data from it's labels and so on
}
}
protocol CustomHeaderDelegate {
func didTapPhoto()
}
class CustomHeader: UICollectionViewCell {
var delegate: CustomHeaderDelegate?
//(... some class regular code ...)
func didTapPhoto() {
delegate?.didTapPhoto() // here I pass to the collectionView that this button was pressed in the header
}
}
Comme vous pouvez le voir, je l'ai mis en place un délégué à chaque fois que le didTapButton
se produit dans l'en-tête, j'appelle la fonction de délégué je connais dans le collectionView
que le bouton a tiré.
Maintenant, j'ai besoin d'essayer le contraire; quand je tape un bouton à l'intérieur du collectionView
j'ai besoin de l'en-tête pour le savoir et qu'il récupère les données désirées.
Quelqu'un peut-il me donner un coup de main? J'ai essayé d'implémenter un autre protocole pour faire le contraire mais je l'ai mal fait parce que ça ne fonctionnait pas, surtout parce que je ne pouvais pas dire dans la classe d'en-tête que le délégué du parent se conformait à ce délégué spécifique, a I fait dans le collectionView
quand j'instancié l'objet d'en-tête et définir sa delegate to self
Merci
marquer la question comme résolue/résolue si c'est le cas. –