Wie kann ich eine Methode in einer Klasse zu nennen, während der Benutzer in einer Ansicht einer anderen Klasse ist?

StackOverflow https://stackoverflow.com/questions/1678052

Frage

Ich habe ein iPhone App basiert auf einer tabBar und Tableviews. Ich möchte der Benutzer in der Lage sein in der Anfangstableview zum Filtern der Daten auf einer Registerkarte und Zugriffsoptionen klicken.

Das Problem, das ich habe, ist, dass, während die Benutzer der Filterkriterien auswählt, ich die Haupttabelle (nicht sichtbar) aktualisiert werden soll. Der Grund dafür wichtig ist, ist, dass ich zeigen will, wie viele Zellen noch in der Tabelle ist, wie es in der Navigationsleiste gefiltert wird.

Derzeit ist das Verfahren zum Filtern der Haupttabelle (-handleFilter) in der viewWillAppear Methode meiner RootViewController Klasse. Wie kann ich diese Methode von meiner „search“ Klasse nennen?

Danke für die Hilfe!

War es hilfreich?

Lösung

Es klingt wie Sie zu viel zwischen Ihrem Modell und Ihren Controller conflating (vorausgesetzt, Sie nach dem MVC-Entwurfsmuster). Die anderen Controller neben der Haupttabelle sollte das Modell selbst abfragen können, ohne zu fragen, die Haupttabelle Controller die Zählerinformationen angezeigt werden.

ich etwas obwohl sein Mißverständnis könnte, ein wenig mehr Informationen darüber, welche Daten Sie verwenden und wie es in den auf die anderen Tableiste Elemente helfen würde angebracht Controller gefiltert ist wird.

Andere Tipps

Der einfachste Weg wäre es, der Optionen Controller einen Zeiger auf die Liste Controller zu geben. Dann können Sie die Methode direkt aufrufen.

Weitere Optionen sind eine Methode / Eigenschaft auf einige globale Objekt definieren (wie AppDelegate) von anderswo die Liste Controller für den Zugriff auf die App, und mit einem stärker dezentralisierten Mechanismus wie NSNotificationCenter um diese Informationen zu übergeben herum (und nicht ein Verfahren call) oder auf dem Modell zu verlassen sich darauf zugreift alle Controller zu benachrichtigen, wenn es ändert sich (möglicherweise Schlüsselwert Beobachtung oder einen expliziten Delegaten-Protokoll).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top