iPhone-Anwendung - Wie kann man das Anzeigen, aufrufen einer Methode in einer anderen Ansicht?
Ich bin eine einfache tab-bar von iPhone-Anwendungen. Es hat zwei Register, eines mit einem UIWebView und die anderen mit ein paar Textfeldern zu halten Einstellungen und eine Schaltfläche, um die Einstellungen zu speichern.
Was ich will zu tun ist, laden die UIWebView, wenn der Benutzer auf speichern klickt auf die Registerkarte Einstellungen/Ansicht. Ich habe bereits die Einstellungen zu speichern, ich muss nur herausfinden, wie man einen Aufruf machen, die UIWebView selbst aktualisieren.
Ich bin verwirrt, wie ein Blick kann Nachrichten senden, die Sie zu einer anderen Ansicht.
InformationsquelleAutor Greg | 2009-05-05
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Tatsache, dass Sie mit diesen zwei Ansichten im Rahmen eines UITabBarController ist unerheblich für den Kern des Problems, nämlich den, dass Sie gerne ein Teil Ihrer Anwendung gesagt werden, dass etwas stattgefunden hat, in einem anderen Teil. Die typische Art und Weise, dies zu tun ist mit KVO, oder mit dem NSNotificationCenter etwa so:
Was ich getan habe, haben Sie miteinander sprechen über das AppDelegate.
Beispiel:
View1 haben eine Funktion, dass gilt:
MyAppDelegate hat eine Funktion namens myFunction, die entweder etwas tun, oder rufen Sie an:
Ich habe ein ziemlich netter laden mehrere Ansichten (und vor und zurück navigieren, als ob Sie wurden in verschiedenen Bildschirmen). Habe ich einfach nicht die Zeit, dies zu schreiben, und poste es pushplay.net -aber ich werde versuchen, so zu tun in den nächsten paar Tagen...
===
EDIT: Okay, ich habe geschrieben was ich habe. Jeder Kommentar ist herzlich willkommen.
http://pushplay.net/blog_detail.php?id=27
Verstehe ich, was die Kommentatoren unten sagen, aber ich habe noch zu sehen, ein Beispiel, das nahtlos funktioniert, basiert darauf, dass mehrere viewcontrollers benötigen Sie zum navigieren zwischen einander.
Hängt es von der Komplexität der spezifischen Anwendung und das Objekt-Modell in der Anwendung:
Wenn die Ansichten in Zusammenhang stehen, und die Nachrichten nur relevant, um den Blick dann Sie können senden einander Nachrichten direkt. Zum Beispiel kann eine Sicht (und sollte) Nachrichten senden, die direkt auf die sub-Ansichten, und Sie können Nachrichten senden, die direkt an Ihre Eltern.
Wenn Sie Ansichten sind nicht miteinander verwandt, zeigen aber Daten über die gleichen Informationen sollten Sie proxy-Nachrichten, obwohl die viewController - das ist genau, warum haben Sie eine view-controller.
Wenn Sie eine komplexe Anwendung mit einem starken MVC-Architektur, das sollte die Kommunikation erfolgt indirekt durch die Aktualisierung der model-Objekte und cascading diese aus, um die Ansichten über Ihre viewControllers.
In diesem Fall sind Sie wahrscheinlich besser dran mit Ihrer app delegieren, weisen Sie den controller hält die web-Ansicht als Delegierter der anderen view-controller beim Start der Anwendung - look in über ein Protokoll, um es sauber, aber etwas einfach, Sie können immer nur deklarieren des Delegaten-Typ, wie Sie Ihre web-Ansicht holding-view-controller.
Benachrichtigungen sind auch eine feine Idee, und es ist keine Aufgabe zu klein für Sie - aber Sie sollten sich bewusst sein, dass es wichtig ist, um ein Abonnement von Benachrichtigungen in Orten wie dealloc. Für die top-Ebene von einer tab-bar-view-controller, der nicht wirklich gleich, obwohl.
Können Sie immer eine Instanz-variable in der tab-view-controller, die auf der web-Ansicht. Nur als ein IBOutlet, Haken Sie es im Interface Builder und dann rufen Sie Ihre Methode auf die Instanz-variable.
.h-Datei:
.m-Datei:
Grüße,
Kyle