Exploration de protocoles et un UITableViewController

Le modèle 8208-Détail Master # Application à Swift, et donc la Locatapp, utilise un UITableViewController

Sommaire

pour afficher la liste principale des événements. Vues de table sont monnaie courante en Cocoa Touch et, sur le Mac, en Cocoa. Une grande partie du travail est déjà fait pour vous, et deux protocoles jouent un rôle clé dans la structure.

Vue sur la table à la fois sur OS X et iOS intègrent très bien avec Core Data- la combinaison est fréquemment utilisé comme il est dans Locatapp. Cette excursion dans les cadres permet de vous familiariser avec les usages réels # 8208-monde de protocoles et de délégués.

Le modèle 8208-Détail Master # Application contient les protocoles que vous voulez. Ils sont déjà configurés pour vous dans le modèle, mais vous devez examiner ce que vous avez.

L'architecture de base qui est UITableViewController est conçu pour fonctionner avec deux protocoles: une source de données (une classe qui adopte la UITableViewDataSource) Et un délégué (une classe qui l'adopte UITableViewDelegate protocole).

La source de données fournit la fonctionnalité impliqué avec la table et ses données. Ses méthodes requises spécifier le nombre de lignes et de sections dans la table avec leurs titres et headers- ses méthodes gèrent également le montage de la structure de la table (le déplacement et la suppression de lignes).

Le protocole vue de tableau délégué gère l'aspect de la table: empreintes, les hauteurs de ligne, la sélection, le contenu de la table de montage (par opposition à la structure qui est gérée par le protocole de source de données), et tape dans une cellule, et l'apparition du contenu d'une cellule.

En regardant délégation et protocoles

Le protocole de délégué fournit l'interface utilisateur. Ses méthodes gérer les sélections et l'édition de contenu.

Ensemble, UITableViewController et ses protocoles (UITableViewDataSource et UITableViewDelegate) Fournir un ensemble puissant de fonctionnalités qui est facile pour vous d'utiliser et à personnaliser. Tout cela pourrait avoir été écrite comme une seule classe gigantesque, mais en la divisant en une classe principale et deux protocoles, il est plus facile à maintenir (et, pour beaucoup de gens, plus facile à comprendre).

La mise en œuvre commune dans de nombreux exemples et des modèles de Xcode rassemble essentiellement la classe de base et les protocoles dans un objet de grande taille.

Réglage de délégués dans Interface Builder




Vous pouvez assigner une instance d'une classe à la délégué propriété UITableView. Vous ne devez pas vous inquiéter à ce sujet parce que tout d'abord, qui est un / problème d'interface de cadre et ce livre met l'accent sur la langue Swift, et la seconde de tous, il est déjà fait pour vous dans la plupart des modèles et des exemples. Voici une revue de la façon dont il est fait.

  1. Ouvert Main.storyboard dans Xcode utilisant Interface Builder (l'éditeur par défaut pour ce fichier).

  2. Ouvrez le plan du document si nécessaire.

  3. Open Master Scène, le contrôleur maître (cercle jaune), puis Tableau.

    Il y aura deux sections Maître scène dans le plan du document. Ouvrez chacun et ensuite regarder le contrôleur maître dans le cercle jaune. On a un flèche de navigation, et l'autre a une image de la liste de table. Vous voulez que l'image de la liste de table.

    image0.jpg

    Lorsque vous regardez la Table View dans Main.storyboard utilisant Interface Builder dans Xcode et illustré ici, vous verrez que les deux déclarations présentés précédemment (délégué et la source de données) Apparaître comme prises. Ils sont reliés à la Maître objet dans le plan du document plutôt que d'être connecté dans votre code.

  4. Sélectionnez Maître (le cercle jaune).

    Comme vous pouvez le voir, lorsque vous sélectionnez Maître dans le plan du document d'Interface Builder, vous pouvez voir l'autre côté de la connexion: les deux sorties de référencement (la source de données et délégué) Sont reliés à Table View.

    image1.jpg

    Lorsque vous effectuez des connexions de ce genre dans Interface Builder, vous pouvez toujours regarder des deux côtés. Il est cette connexion dans le modèle qui associe la vue de la table avec le Maître.

  5. Avec Maître sélectionnée, regardez l'inspecteur Identity dans le secteur des services publics (montré à l'arrière droit de la figure précédente).

    Comme tu vois, Maître est un exemple de MasterViewController. Vous pouvez voir que le mettant en surbrillance et en regardant Aide rapide. Là, vous verrez que MasterViewController est une sous-classe de UITableViewController.

  6. Regarder dans MasterViewController.swift pour voir sa déclaration dans le modèle (et, donc, en Locatapp).

    Il n'y a pas de référence aux protocoles. Comment obtiennent-ils dans le code?

    La réponse est que MasterViewController est une sous-classe de UITableViewController.

    image2.jpg
  7. Highlight UITableViewController dans la déclaration montré et ouvert Aide rapide.

    Vous y trouverez un lien vers sa référence.

  8. Si vous cliquez sur la référence à la documentation de référence pour UITableViewController.

    Vous verrez la documentation UITableViewController comme montré.

    image3.jpg

    UITableView # 173-Controller est conforme à la fois UITableViewDataSource et à UITableViewDelegate. Cela signifie que le ou les sous-classes de celui-ci doit être conforme à ces protocoles. (Il n'a pas d'importance si elle est la classe d'origine - UITableViewController dans ce cas - ou une sous-classe tels que MasterViewController qui est conforme. Les méthodes et les propriétés doivent être présents lorsque vous générez le projet et l'exécuter.


» » » » Exploration de protocoles et un UITableViewController