Was ist der beste Weg, um zwischen View-Controllern zu kommunizieren?

Wird neu in objective-c, cocoa und dem iPhone dev im Allgemeinen, ich habe einen starken Wunsch, um das beste aus der Sprache und der frameworks.

Einer der Ressourcen, die ich verwende, ist Stanford CS193P Klasse Notizen, die Sie verlassen haben auf das web. Es besteht aus einer Vorlesung Notizen, Aufgaben und Beispiel-code, und da der Kurs wurde von Apple die dev ' s, die ich auf jeden Fall überlegen, es zu werden "aus dem Maul des Pferdes".

Klasse Website:
http://www.stanford.edu/class/cs193p/cgi-bin/index.php

Vorlesung 08 ist mit einer Zuweisung zu bauen, ein UINavigationController-basierte app, die mehrere UIViewControllers drückte auf den UINavigationController-stack. Das ist, wie der UINavigationController funktioniert. Das ist logisch. Es gibt jedoch einige stern Warnungen in der Folie über die Kommunikation zwischen Ihrem UIViewControllers.

Werde ich zitiere aus diesem ernst der Folien:
http://cs193p.stanford.edu/downloads/08-NavigationTabBarControllers.pdf

Seite 16/51:

Wie Nicht Zu Teilen Daten

  • Globale Variablen oder singletons
    • Dies beinhaltet Ihre Anwendung delegieren
  • Direkte Abhängigkeiten machen Ihr code weniger wiederverwendbar
    • Und schwieriger zu Debuggen & test

Ok. Ich bin down mit. Nicht blind werfen alle Ihre Methoden, die verwendet werden wird für die Kommunikation zwischen den viewcontroller in Ihre app zu delegieren und auf die viewcontroller-Instanzen in der app-delegate-Methoden. Fair 'nuff.

Etwas weiter auf, wir Holen diese Folie sagt uns, was wir sollte tun.

Seite 18/51:

Best Practices für den Fluss der Daten

  • Herauszufinden, genauwas vermittelt werden sollte,
  • Definieren von input-Parametern für Ihre view-controller
  • Für die Kommunikation zurück auf die Hierarchie, verwenden Sie lose Kopplung
    • Definieren Sie eine generische Schnittstelle für Beobachter (wie delegation)

Diese Folie wird dann gefolgt von, was scheint, ein Platz Halter schieben, wo der Dozent dann offenbar zeigt die best practices an einem Beispiel mit der UIImagePickerController. Ich wünschte die videos waren verfügbar! 🙁

Ok, also... ich fürchte, mein objc-fu ist nicht so stark. Ich bin auch ein bisschen verwirrt durch die Letzte Zeile im obigen Zitat. Ich habe seit meinen Gerechten Anteil googeln über dies und ich habe gefunden, was erscheint, um eine menschenwürdige Artikel spricht über die verschiedenen Methoden der Beobachtung/Anzeige Techniken:
http://cocoawithlove.com/2008/06/five-approaches-to-listening-observing.html

Methode #5 auch zeigt Delegierten als eine Methode! Außer.... Objekte können nur einen Delegierten zu einer Zeit. Also, wenn ich mehrere viewcontroller Kommunikation, was soll ich tun?

Ok, das ist das set-up in gang. Ich weiß, ich kann einfach nicht meine Kommunikation Methoden in der app delegieren, die durch Verweis die mehrere viewcontroller-Instanzen in meiner appdelegate, aber ich wollen, das zu tun diese Art der Sache die Recht Weg.

Bitte helfen Sie mir "do the right thing" durch die Beantwortung der folgenden Fragen:

  1. Wenn ich versuche, schieben Sie einen neuen viewcontroller auf der UINavigationController-stack, wer werden sollte, dies zu tun zu schieben. Die Klasse/Datei in meinem code ist der richtige Ort?
  2. Wenn ich will, um zu beeinflussen, ein Stück von Daten (Wert eines iVar) in einem meiner UIViewControllers, wenn ich in einem verschiedenen UIViewController, was ist die "richtige" Art und Weise, dies zu tun?
  3. Geben, wir können nur einen Delegierten setzen in einer Zeit, in der ein Objekt, wie würde die Umsetzung Aussehen, wenn der Dozent sagt "Definieren Sie eine generische Schnittstelle für Beobachter (wie delegation)". Ein pseudocode Beispiel wäre furchtbar hilfreich ist hier, wenn möglich.

InformationsquelleAutor der Frage | 2009-02-20

Schreibe einen Kommentar