Wenn ich eine benutzerdefinierte UIView aus einem UITableViewController öffnen, wie schließe ich die benutzerdefinierte Ansicht und gehen Sie zurück in die Tabellensicht?

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

Frage

Ich bin mit einem UITableViewController für ein Menü in einem Spiel. Die Tabellenansicht öffnet ich einen einen View-Controller für meinen benutzerdefinierten UIView, die das Spiel zeigt. Wenn das Spiel beendet ist, die UIView mitgeteilt (die irgendwie ist die MVC Prinzipien zu ruinieren) und von dort bin ich irgendwie verloren.

Fragen:

  1. Kann ein UIView mit seinem Controller kommunizieren? Wie?
  2. Kann man Controller reden die, die es begann? Wie?
  3. Wie über ich zwischen all diesem komplizierten Netz von Ansichten und Controller anmutig?
War es hilfreich?

Lösung

  1. Verwenden Sie hier einen Delegierten-Protokoll. Ihr benutzerdefiniertes Spiel UIView kann eine delegate Eigenschaft und rufen Methoden auf diesem Delegaten, wenn Ereignisse eintreten (Spiel vorbei, Spiel pausierte, Ansicht geschlossen, etc). Hier ist ein großer Beitrag ist Delegierten mit: Wie erstelle ich Delegierten in objektiv- C?

  2. Ich würde empfehlen, eine UINavigationController verwenden. Sie müssen nicht unbedingt die Navigationsleiste zeigen, aber wenn Sie nisten Ihre Ansicht-Controller in einer Navigationssteuerung haben Sie Zugriff auf -pushViewControllerAnimated: und -popViewControllerAnimated: die es zur Navigation zwischen den Ebenen von verschachtelten View-Controller einfach.

  3. Ein weiterer Vorteil des UINavigationController -. Sie werden eine schöne Folienanimation erhalten, wenn Sie zwischen den Ansichten wechseln

Es gibt andere 3rd-Party-Mechanismen gibt, die Sie über die UIKit UINavigationController / UIViewController Mechanismen bevorzugen. Schauen Sie sich die Three20 Projekt , insbesondere die TTNavigationCenter Klasse.

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