Explo Protokolle und eine UITableViewController

Der Master # 8208-ausführliche Anwendungsvorlage in Swift und damit die Locatapp verwendet ein UITableViewController

die Master-Liste der Ereignisse anzuzeigen. Tabelle Ansichten sind sehr häufig in Cocoa Touch und auf dem Mac in Cocoa. Ein großer Teil der Arbeit ist für Sie erledigt bereits, und zwei Protokolle spielen eine Schlüsselrolle in der Struktur.

Tabelle Blick sowohl auf OS X und iOS integriert sich sehr gut mit Core-Data- die Kombination häufig verwendet wird, wie es in Locatapp ist. Dieser Ausflug in die Frameworks hilft Ihnen, mit realen # 8208-Welt Verwendung von Protokollen und Delegierten vertraut zu machen.

Der Master # 8208-ausführliche Anwendungsvorlage enthält die Protokolle, die Sie benötigen. Sie sind bereits für Sie in der Vorlage projektiert werden, aber Sie sollten prüfen, was Sie haben.

Die grundlegende Architektur ist, dass UITableViewController eine Datenquelle (eine Klasse, die annimmt: soll zusammen mit zwei Protokolle zur Arbeit UITableViewDataSource) Und ein Delegierter (eine Klasse, die die Annahme UITableViewDelegate Protokoll).

Die Datenquelle stellt die Funktionalität mit dem Tisch und seine Daten beteiligt. Die erforderlichen Methoden geben Sie die Anzahl der Zeilen und Abschnitte in der Tabelle zusammen mit ihren Titeln und Kopfzeilen kann seine Methoden auch die Bearbeitung der Tabellenstruktur verwalten (Verschieben und Löschen von Zeilen).

Die Tabellenansicht Delegierten Protokoll behandelt die Darstellung der Tabelle: Vertiefungen, Zeilenhöhen, Auswahl, Bearbeitung von Tabelleninhalten (wie an der Struktur entgegengesetzt, die von der Datenquelle Protokoll abgewickelt wird), und tippt in einer Zelle und das Aussehen des Inhalts einer Zelle.

Mit Blick auf Delegation und Protokolle

Der Delegat-Protokoll stellt die Benutzeroberfläche. Seine Methoden verwalten Auswahl und das Bearbeiten von Inhalten.

Zusammen, UITableViewController und seiner Protokolle (UITableViewDataSource und UITableViewDelegate) Eine Reihe von leistungsfähigen Funktionalität bieten, die einfach für Sie zu bedienen und anzupassen. Dies könnte alle wurden als eine gigantische Klasse geschrieben, sondern indem sie in eine Hauptklasse und zwei Protokolle aufzuteilen, ist es leichter zu pflegen (und für viele Menschen, leichter zu verstehen).

Die gemeinsame Umsetzung in vielen Beispielen und Xcode-Vorlagen wieder zusammen im wesentlichen die Basisklasse und die Protokolle zu einem großen Objekt.

Einstellen Delegierten in Interface Builder

Sie können eine Instanz einer Klasse der zuweisen delegieren Immobilien in UITableView. Sie müssen nicht befürchten, dass, weil vor allem, dass ein Rahmen / Schnittstelle Problem ist und dieses Buch konzentriert sich auf die Swift Sprache, und zweitens, ist es für Sie schon in den meisten der Vorlagen und Beispiele durchgeführt. Hier ist eine Überprüfung, wie es gemacht wird.

  1. Öffnen Main.storyboard in Xcode Interface Builder (den Standardeditor für diese Datei).

  2. Öffnen Sie das Dokument Umriss, wenn nötig.

  3. Offene Master-Szene, der Master-Controller (gelber Kreis) und dann der Tabellenansicht.

    Es werden zwei Master-Szene Abschnitte im Dokument Umriss sein. Öffnen Sie jeden ein und suchen Sie dann auf der Master-Controller im gelben Kreis. Man hat einen Navigationspfeil, und der andere hat eine Tabellenliste Bild. Sie wollen die Tabellenliste Bild.

    bild0.jpg

    Wenn man sich die Tabellenansicht im Main.storyboard Interface Builder in Xcode und hier gezeigt, werden Sie sehen, dass die beiden Erklärungen zuvor gezeigt (delegieren und Datenquellezeigen) als Auslässe auf. Sie sind mit dem Internet verbunden Meister Objekt im Dokument Umriss, anstatt in Ihrem Code verbunden.

  4. Wählen Sie Master (der gelbe Kreis).

    Wie Sie sehen können, wenn Sie wählen Meister in dem Dokument Übersicht über Interface Builder, können Sie die andere Seite der Verbindung sehen: Die beiden Referenzierung Stellen (Datenquelle und delegieren) Verbunden sind, Tabellenansicht.

    image1.jpg

    Wenn Sie Verbindungen wie diese im Interface Builder zu machen, kann man es auch dreht immer von beiden Seiten. Es ist diese Verbindung in der Vorlage, die der Tabellen-Ansicht mit dem Meister in Verbindung bringt.

  5. Mit Meister ausgewählt, Blick auf die Identität Inspektor im Bereich Utilities (hinten rechts von der vorhergehenden Abbildung dargestellt).

    Wie du siehst, Meister ist eine Instanz MasterViewController. Sie können sehen, dass durch sie und schaute Schnelle Hilfe hervorheben. Dort werden Sie sehen, dass MasterViewController ist eine Unterklasse von UITableViewController.

  6. Hinein sehen MasterViewController.swift seine Erklärung in der Vorlage (und somit in Locatapp) zu sehen.

    Es gibt keinen Hinweis auf die Protokolle. Wie sie in den Code zu bekommen?

    Die Antwort lautet: MasterViewController ist eine Unterklasse von UITableViewController.

    image2.jpg
  7. Höhepunkt UITableViewController in der Erklärung gezeigt und offen Schnelle Hilfe.

    Dort können Sie einen Link zu seiner Referenzen.

  8. Wenn Sie auf der Referenzdokumentation auf der Referenz klicken für UITableViewController.

    Sie werden sehen, in der Dokumentation UITableViewController wie gezeigt.

    image3.jpg

    UITableView # 173 Controller entspricht sowohl UITableViewDataSource und UITableViewDelegate. Dies bedeutet, dass es oder Subklassen davon zu diesen Protokollen entsprechen. (Es spielt wirklich keine Rolle, ob es die ursprüngliche Klasse - UITableViewController in diesem Fall - oder einer Unterklasse wie MasterViewController dass entspricht. Die erforderlichen Methoden und Eigenschaften müssen vorhanden sein, wenn Sie das Projekt erstellen und ausführen.

Menü