J'ai un contrôleur d'affichage qu'il a deux sous-traits de fichiers NIB. Mon premier nom NIB est CitysCollection et Secend est Curnexib que tous les deux sont UIView. Dans CityCollection View, j'ai une collectionView que je souhaite quand je clique sur un élément de cela, imprimez les données que j'envoie par protocole dans l'étiquette de la classe Curnexib. (L'attention des deux est uIView et non Visualiser le contrôleur.) Mais cela ne fonctionne pas. Ma classe de contrôleur de vue principale est vide encore. Ceci est mon code:
CityCollection Classe: P>
////CurrentXib
class CurrentXib: UIView, sendDataDelegate {
func name(data: String) {
lblCityName.text = data
}
@IBOutlet weak public var lblCityName: UILabel!
override func awakeFromNib() {
let myCity = CityCollection()
myCity.delegate = self
}
}
4 Réponses :
Le problème est ici:
let myCity = CityCollection() // <-- this is the problem
myCity.delegate = self
Alors, que dois-je faire maintenant? (désolé mais je suis débutant)
Vous pouvez prendre une instance d'action de après cela dans votre CityCollection Code> dans CityCollection.class comme ceci Curnexib code> Vous pouvez utiliser avec CETTE P> CityCollection.shared.delegate = self
ne fonctionne pas. Wtrite "CityCollection.shared.Delegate = Self" à Awakefromnib?
de ViewController, qui est maintenant vide, en supposant dans la vue ViewDidLoad du contrôleur de vue parent, vous ajoutez votre parentviewcontroller code>. Dans ce contrôleur d'affichage, vous maintenez deux NIBS collectionview.delegate = auto code>. et mettre en œuvre votre méthode de délégué P> func method(_ notification: NSNotification) {
if let dict = notification.userInfo as? [String : String] {
if let name = dict["name"] as? String{
//currentXIB got the name right now, he has to update now
lblCityName.text = name
}
}
}
Oui, je l'ai fait avec notification et cela a fonctionné. Mais maintenant, je veux mettre en œuvre cela avec délégué et sans notification. mais comment?
J'ai trouvé la solution.
Je nettoie d'abord ci-dessous le code de AWAREFROMNIB: P>
self.cityCollection.delegate = self.currentXib
Le contrôleur d'affichage a la référence aux deux points de vue. Il devrait en définir un comme délégué de l'autre.
@ Paulw11, ok mais mes données sont en une vue et je veux imprimer que dans l'étiquette d'une autre vue. Comment puis je faire ça?