Transmettre les données lors de la rejeter modal viewController en swift
Je suis en train de passer des données à partir de la modal ViewController à son source ViewController. Je pense que je dois utiliser délégation mais ça ne fonctionne pas.
protocol communicationControllerCamera{
func backFromCamera()
}
class Camera: UIViewController{
var delegate: communicationControllerCamera
init(){
self.delegate.backFromCamera()
}
}
class SceneBuilder: UIViewController, communicationControllerCamera{
func backFromCamera(){ //Never called
println("YEAHH")
}
}
La backFromCamera méthode, il n'est pas appelé. Qu'ai-je fait de mal?
OriginalL'auteur Marco | 2014-09-10
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas défini un délégué de sorte qu'il était vide lorsque vous avez essayé d'appeler
backFromCamera()
.Voici un simple exemple de travail que vous pouvez tester. Remarquez l'utilisation de l'option type (?) pour le délégué.
Vous pouvez trouver toutes les informations dont vous avez besoin dans Apple Swift documentation.
Oui! bien sûr, vous pouvez mettre en place cette solution avec protocole : func backFromCamera(string : Chaîne de caractères)...
OriginalL'auteur Gad
Évidemment la réponse choisie est correcte, mais il ne m'a pas aidé. Je n'ai réussi à mettre en place des protocoles bien, alors je voulais vous donner ma propre explication au cas où quelqu'un a de la difficulté à saisir le concept, comme je l'étais.
Protocole le Code Est Écrit en Trois Endroits:
Quand j'écris mes protocoles, je les ai mis dans ma "boîte à outils" document et je n'ai toujours écrire des commentaires pour me rappeler qui VCs font ce qu'. Deux exemples:
Donc il y a toujours:
1. Le code de protocole
Voir l'image ci-dessus pour référence. Essentiellement, le code de protocole est exactement là où vous vous donner le protocole d'un nom et de déclarer quelles sont les fonctions que vous voulez appeler à distance/délégué à. Nom du protocole. Déclarer les noms des fonctions qui peuvent être appelés à déclarer leurs types de paramètres tels que la chaîne de caractères, etc.
2. Code dans un VC qui initie l'action
C'est le code qui lance le protocole. Dans cet exemple, c'est le code à partir d'une cellule de tableau, qui a besoin de déléguer une partie du travail retour à la table principale, VC. La première capture d'écran montre la création du délégué de la variable et la seconde capture d'écran est l'utilisation réelle de cette variable.
Donc le code ci-dessous sont table-cell boutons. Ils ont tous besoin de déclenchement de code à l'extérieur de la cellule VC, donc ils ont toutes les fonctions de déclenchement à l'aide du protocole I déclarées ci-dessus.
3. Code dans un VC qui est déléguée à la réalisation de l'action
Maintenant le protocole est appelé, mais qui CR des réponses à l'appel? Pour répondre à cette question, choisissez la VC et ajouter le nom de protocole à la déclaration de la classe:
Enfin, vous avez besoin de l'effectif de la viande de l'ensemble de la chose. Pas le déclencheur, pas le protocole en lui-même, pas la déclaration de la classe... mais la fonction que vous voulez l'appeler:
Espère Que Cette Aide
Je ne sais pas pourquoi les protocoles de ne pas s'enfoncer à travers mon crâne épais, mais ils ne le feraient pas. J'espère que cela aide d'autres comme moi!
OriginalL'auteur Dave G