-1
votes

Comment utiliser le délégué du protocole entre la classe NIB à Swift?

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
    }
}


2 commentaires

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?


4 Réponses :


1
votes

Le problème est ici:

    let myCity = CityCollection() // <-- this is the problem
    myCity.delegate = self


1 commentaires

Alors, que dois-je faire maintenant? (désolé mais je suis débutant)



-1
votes

Vous pouvez prendre une instance d'action de CityCollection Code> dans CityCollection.class comme ceci xxx pré>

après cela dans votre Curnexib code> Vous pouvez utiliser avec CETTE P>

CityCollection.shared.delegate = self


1 commentaires

ne fonctionne pas. Wtrite "CityCollection.shared.Delegate = Self" à Awakefromnib?



0
votes

de ViewController, qui est maintenant vide, en supposant parentviewcontroller code>. Dans ce contrôleur d'affichage, vous maintenez deux NIBS

dans la vue ViewDidLoad du contrôleur de vue parent, vous ajoutez votre 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
        }
    }
}


1 commentaires

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?



0
votes

J'ai trouvé la solution.

Je nettoie d'abord ci-dessous le code de AWAREFROMNIB: P>

self.cityCollection.delegate = self.currentXib


0 commentaires