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.
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.
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.
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.
Tags und Links objective-c iphone cocoa three20