Exemples de Délégués en Swift
J'ai essayé d'apprendre comment la délégation avec les protocoles de travail. J'ai tout compris, mais je ne peux pas penser quand à utiliser la délégation d'autre que lors de l'utilisation de la table de vues et éventuellement faire défiler les vues.
En général, lorsque la délégation est-elle utilisée?
Vous devez vous connecter pour publier un commentaire.
Qu'est-ce que la Délégation?
Tout d'abord, vous devez savoir que Délégation Modèle n'est pas exclusive, pour le monde iOS:
Mais en travaillant avec des la délégation dans le monde iOS est si commun, je suppose que vous pouvez voir beaucoup de classes qui fournissent une délégation/source de données pour donner la capacité à fournir des propriétés ou des comportements pour l'exemple. Il est l'un des principaux mécanismes de la façon dont les objets de parler les uns aux autres dans CocoaTouch.
Alternatives:
Toutefois, la délégation est pas la seule façon de laisser les objets de parler les uns aux autres dans iOS, vous devriez savoir qu'il y a:
Remarque: dans le cas où si vous êtes intéressé par une comparaison entre eux, vous voudrez peut-être consulter les articles suivants:
Lors de l'utilisation de la Délégation?
Donc, la question est: "pourquoi devrais-je utiliser la délégation à la place de ces options?"
Je vais essayer de faire simple; je vous suggère le recours à la délégation lorsque vous avez un à un relation entre deux objets. Juste pour le rendre plus clair, le objectif de parler un peu au sujet de la NotificationCenter est d'essayer de donner un sens lorsque les délégations sont utilisés:
NotificationCenter représente un à plusieurs relation; Simplement, il fonctionne comme: affichage (notification) une notification sur un événement spécifique et l'observation, être notifié à propos d') cette notification -- il pourrait être observé n'importe où d'autre, Logiquement, c'est ce que l'on à beaucoup de relation. C'est une représentation de la Modèle Observateur.
Comment Appliquer la Délégation?
Dans le but de simplifier, je voudrais mentionner comme suit:
Connaître les conditions: Chaque délégué dispose de son propre règles, répertoriés dans le délégué protocole qui est un ensemble de signatures de méthode que vous devez mettre en œuvre pour se conformer à cette délégation.
Conforme pour la délégation: c'est tout simplement de laisser votre classe à un délégué, par le marquage ce. Par exemple:
class ViewController: UIViewController, UITableViewDelegate {}
.Reliant le délégué de l'objet: Marquage de votre classe à un délégué est pas assez, vous devez vous assurer que l'objet que vous voulez être confirmé par votre classe pour donner l'emploi de votre classe.
Mise en œuvre des exigences: Enfin, votre classe ont pour mettre en œuvre toutes les méthodes requises énumérées dans la délégué protocole.
Par Exemple
Qu'il ne semble un peu confus? Que penser d'un exemple réel?
Envisagez le scénario suivant:
Imaginez que vous êtes à la construction d'une application liée à la lecture de fichiers audio. Certains des viewControllers doit avoir une vue d'une lecteur audio. Dans le cas le plus simple, nous supposons qu'il doit avoir un bouton play/pause et un autre bouton pour, disons, montrant une liste de lecture en quelque sorte, indépendamment de la façon dont il pourrait ressembler.
C'est très bien, le lecteur audio de point de vue a sa séparés
UIView
classe et.xib
fichier; il devrait être ajouté comme une sous-vue dans toutes les viewController.Maintenant, comment pouvez-vous ajouter des fonctionnalités à la fois des boutons pour chaque viewController? Vous pourriez penser: "tout Simplement, je vais ajouter un
IBAction
dans la classe de la vue et c'est tout", à première vue, il pourrait sembler ok, mais après re-penser un peu, vous vous rendrez compte qu'il ne sera pas applicable si vous essayez de gérer l'événement en appuyant sur le bouton sur le contrôleur de couche; Pour le rendre clair, que si chaque viewController mis en œuvre les différentes fonctionnalités lorsque vous appuyez sur les boutons dans le lecteur audio de vue? Par exemple: taper sur la liste de lecture en "Une" viewController affiche un tableView, mais touchant dans la "B" viewController affiche un sélecteur de.Bien, nous allons appliquer Délégation à cette question:
Le "#" commentaires représente les étapes de la rubrique "Comment Appliquer la Délégation?" section.
Lecteur Audio De Vue:
- Vue-Contrôleur:
Astuce:
Comme l'un des plus populaire exemples d'utilisation de la délégation est Le Passage Des Données En Arrière entre les Contrôleurs de Vue.
Délégation est utilisé lorsque vous souhaitez transmettre des informations ou de l'état d'Un objet à un autre objet B. Généralement l'objet B est l'objet qui a créé l'objet A.
Je vais énumérer certains situations où vous devez utiliser la délégation.
Oui, vous avez raison. vues de table et de faire défiler les vues utiliser les délégués parce qu'ils veulent dire à qui est intéressé (usuall votre vue-contrôleur), que "quelqu'un choisi une ligne!" ou "quelqu'un défilement le défilement de la vue!". Non seulement faire défiler les vues et les vues de table utiliser les délégués,
UITextField
etUIDatePicker
et beaucoup d'autres points de vue utiliser les délégués trop!Vue, les Contrôleurs ont des délégués. Par exemple,
UIImagePickerController
. La raison en est à peu près la même que ci-dessus - parce que leUIImagePickerController
veut vous dire des messages comme "une image a été sélectionnée!". Un autre exemple seraitUIPopoverControllerDelegate
. Ce délégué vous dit des choses comme "la liste a été rejetée!"D'autres classes qui utilisent les délégués comprennent
CLLocationManager
. Ce délégué vous dit des choses comme "l'emplacement de l'utilisateur a été détecté" ou "impossible de détecter l'emplacement de l'utilisateur".Vous pouvez utiliser la délégation dans votre code lorsque un certain point de vue contrôleur de la vôtre veut envoyer des messages à d'autres contrôleurs de vue. Si c'est un affichage des paramètres du contrôleur, il peut envoyer des messages comme "le paramètre de taille de police a été changé!" et la vue-contrôleur qui se soucie de la taille de la police de réglage changement permettra de connaître et de modifier la taille de la police de l'étiquette ou de quelque chose.
Méthode du délégué à Selectionimages
Créer baseClass Et Insérez le code suivant
Créer une Autre classe alors insérez le code
Délégation dans le monde IOS et principalement en MVC (Modèle-Vue-Contrôleur)
c'est une façon pour le point de Vue de parler à la manette et ça s'appelle "à l'aveugle de la communication"
et elle signifie pour donner le "leader coller" à un autre objet ( n'a pas vraiment de soins qui prend la relève, mais la plupart du Contrôleur) pour le contrôle des composantes que la vue ne peut pas le contrôle sur son propre (n'oubliez pas que c'est seulement un point de vue) ou n'est pas propre
pour le rendre plus simple ....
le contrôleur peut parler d'un point de vue, mais la vue ne peux pas parler pour le contrôleur sans Délégation