Three20: Wie man eine Klasse von Objekten zwischen 2 Ansichten übergibt

7

Ich habe eine TTableView. Die Elemente in dieser Tabelle werden einer URL zugeordnet, sodass beim Klicken auf ein Element eine weitere Ansicht mit Informationen zu diesem Element angezeigt wird. All diese Informationen sind Attribute einer Klasse. Also, wie kann ich meine TTableTextItem URL erstellen, um die Klasse, die Informationen enthält, an die Ansicht zu übertragen, die für die Anzeige dieser Informationen verantwortlich ist?

Vielen Dank im Voraus.

    
Harkonnen 16.10.2010, 14:10
quelle

4 Antworten

13

Eine Möglichkeit besteht darin, eine TTURLAction zu verwenden. Wenn der Benutzer eine Zeile in der Tabelle auswählt, die Ihre Methode didSelectObject (von TTTableViewController) aufruft, extrahieren Sie das Objekt oder den Satz von Objekten, die übergeben werden sollen, und erstellen Sie eine TTURLAction wie folgt:

%Vor%

Öffnen Sie dann die Aktion:

%Vor%

Der Controller, den Sie als Ergebnis dieser Aktion öffnen möchten, sollte in Ihrer TTURLMap registriert sein und sollte einen Konstruktor haben:

%Vor%

Ich neige dazu, Kategorien für Klassen für Objekte zu erstellen, die einen anderen Controller öffnen und sich selbst anzeigen können.

    
lyonanderson 17.10.2010, 10:17
quelle
6

Das große Problem bei der direkten Verwendung von TTURLAction ist, dass Sie sie nicht wirklich mit TTTableViewItem verwenden können. Die einzige Möglichkeit, dies wirklich zu tun, ist das Überschreiben von -didSelectObject:atIndexPath: und das Erstellen Ihrer benutzerdefinierten TTURLAction mit dem gewünschten Objekt im query -Wörterbuch. Dies unterbricht jedoch die Trennung von Modell- und View-Controller und wird kompliziert, sobald mehrere Objekte übergeben werden.

Stattdessen habe ich eine kleine Kategorie verwendet, die automatisch die userInfo -Eigenschaft des Tabellenelements (die ich auf das Notwendige gesetzt habe) annimmt und automatisch als URL-Parameter hinzufügt.

Und dann verwenden Sie dies, um es in Ihrem zugeordneten View-Controller abzurufen.

%Vor%

}

Sie können es als GitHub Gist hier herunterladen. Der Code ist auch unten. Wir überlegen, dies irgendwann in den Hauptzweig zu integrieren.

TTTableViewDelegate + URLAdditions.h

%Vor%

TTTableViewDelegate + URLAdditions.m

%Vor%     
Michael Grinich 24.10.2010 18:09
quelle
0

Ich denke die Dokumentation auf der offiziellen Website beschreibt das Navigationsschema für Three20 sehr deutlich. Ihre Frage ist die häufigste Aufgabe jeder Anwendung und Three20 bietet dafür eine starke Unterstützung.

    
Hoang Pham 16.10.2010 14:32
quelle
0

Ich habe wenig diesen tollen Code :) als gepostete Version strip Callback von TTTableButton .

Korrektur ist:

%Vor%     
Martin 01.02.2011 17:48
quelle

Tags und Links