2012-04-06 5 views
2

Ich habe 3 Registerkarten mit Tab-Leiste-Controller. Alle 3 View-Controller in der Tab-Leiste verfügen über Navigations-Controller, um eigenständig zu anderen View-Controllern zu wechseln.Wie neu laden oder aktualisieren Daten in Registerkarten in Tab-Leiste-Controller mit neuen Daten?

Einer der Ansichtscontroller in der Registerkartenleiste ist mit den Karten- und Kartenanmerkungen (Kartenansicht-Controller). Diese Anmerkungen stammen vom Webdienst basierend auf dem aktuellen Standort, wenn die App gestartet wird. Im Kartenansicht-Controller befindet sich oben ein Navigationsleistenelement (Suchschaltfläche), mit dem Sie die Karte nach einem anderen Ort durchsuchen können. Sobald Sie auf die Schaltfläche Suchen klicken, wird der Suchansicht-Controller auf den Navigations-Stack geschoben. Nachdem die Suche abgeschlossen und ein neuer Speicherort gefunden wurde, wird der neue Standort in der Tabellenansicht im selben Suchansicht-Controller angezeigt.

Mein Ziel ist es, nach dem Klicken auf das Tabellenansichtselement automatisch zur Kartenansicht zurückzukehren und die neuen Anmerkungsdaten auf der Karte basierend auf dem neu gesuchten Standort zu laden. Sobald die Kartenansicht erneut angezeigt wird, sollten die alten Daten, die beim ersten Start der App abgerufen wurden, durch neue Daten aus dem Internet ersetzt werden. Alle 3 View-Controller in der Tableiste teilen die Annotationsdaten über Singleton-Objekte.

Meine Frage ist, was soll ich tun Blick zurück mit neuen Daten abzubilden, wenn der Benutzer das Element in der DidSelectRowAtIndexPath Methode im Controller Suchansicht klickt? Was ist der beste Weg, um in der Tableiste zur Kartenansicht zurückzukehren und die Daten erneut vom Webservice zu laden?

Muss ich die 'popViewControllerAnimated' bei der Suche View-Controller verwenden und dann 'viewWillAppear' Methode in der Kartenansicht Controller funktionieren? Wie übertrage ich die Breiten- und Längengradwerte des neuen Standorts vom Suchansicht-Controller an den Map-View-Controller? Importieren Sie den Map-View-Controller in den Suchansicht-Controller und legen Sie den ivar des Map-View-Controllers für den Längen- und Breitengrad fest, obwohl der 'Search-View-Controller' durch den 'Map-View-Controller' ausgelöst wurde? Was ist die Schwierigkeit beim Importieren des Kartenansicht-Controllers in den Suchansicht-Controller, da sich der Kartenansicht-Controller bereits im Speicher befindet?

Was ich versuche zu erreichen ist ähnlich wie die kostenlose App 'Wikihood', wenn es die Karte durchsucht.

Vielen Dank.

Antwort

0

Es scheint, dass Sie Ihr Singleton-Objekt als Datenmodell verwenden könnten. Auf diese Weise zeigt viewWillAppear: nur den Standort an, der aktuell im Datenmodell festgelegt ist, und Ihr Such-Controller hat einen geeigneten Platz, um die Ergebnisse anzuzeigen.

Die anderen Optionen, die Ihnen in den Sinn kommen, wären ein Delegat oder eine Benachrichtigung, aber da Sie das Modellobjekt bereits besitzen, wäre es konsistent, es weiter zu verwenden.

+0

Vielen Dank für die schnelle Antwort. Ich dachte zu diesem Zweck an das Singleton-Objekt, aber ich dachte, es gäbe einen besseren Weg. Ich werde versuchen, das Singleton-Objekt zu verwenden, um die Breiten- und Längenwerte zu speichern. Verwenden Sie einfach 'popViewControllerAnimated', um zur Kartenansicht zurückzukehren, um die Aktualisierung auszulösen, oder gibt es einen besseren Weg? Vielen Dank. – user1026669

+0

Wenn Sie Push verwenden, um es dorthin zu bekommen, ist Pop der normale Weg zurück. Wenn es überhaupt einen anderen Weg gibt, ist es wahrscheinlich nicht besser. :) –

+0

BTW, wie Sie vorgeschlagen haben, habe ich die lat und lon Daten in das Sigleton-Objekt, und es funktioniert sehr gut. Und es ist logisch sehr fit. Vielen Dank. – user1026669

Verwandte Themen