2010-03-05 8 views
7

Ich versuche, die Grundlagen des Cocoa (Iphone) MVC-Designs zu verstehen, aber es ist ziemlich hart. Ich bin über mehrere Beispielanwendungen aus dem Netz, den Büchern ... gekommen, aber ich habe nichts gefunden, was zu dem ich suche, da die meisten Beispiele gerade eine einfache APP darstellen (dh ein Viewcontroller mit einer Rückseite viewcontr und ein bisschen mehr ..). Also mal sehen, ob jemand bereit ist, mich in zu helfen, mich in die richtige Richtung:Verstehen, wie App-Delegaten und View-Controller miteinander in Beziehung stehen

  • Mein Ziel eine etwas komplexe Anwendung zu erstellen ist. Ich möchte die folgende Beziehung von Ansichten haben:

    1. Präsentation Ansicht

    2. Hauptmenü-Ansicht (die einen Controller geladen mehrere speicherintensive Vars haben würde): verschiedene Optionen, die in völlig neue Folge hätte komplexe Ansichten. Zum Beispiel eine Begin-Option, um alles einzuleiten, was die App zulässt; eine zweite Option, um eine andere komplexe Aufgabe mit unterschiedlichen Ansichten und Aktionen auszuführen; eine Option zum Konfigurieren von Optionen; eine Hilfe-Option, eine über Option, und so weiter ..

  • In einem ersten Ansatz habe ich versucht, mehrere abgerundete Tasten in einer Ansicht unter der Mainwindow-Spitze mit einem zugehörigen AppDelegate einzubetten. Dieser Ansatz stellte jedoch die Frage, wie es mir gelingt, zwischen Ansichten/Viewcontrollern zu wechseln. Nachdem ich einige nicht abgefangene Ausnahmen hatte, weil ich die Grundlagen wahrscheinlich nicht vollständig verstehe, habe ich versucht, zu einfacheren Dingen überzugehen.

  • Dann kam ich über die Navigation und Tabbar Standard-Cocoa-Controller. Ich möchte keine Tabbar, obwohl es für andere Teile dieser App gut kommen könnte. Dann ist der Nav-Controller das, was ich für diesen Fall am geeignetsten finde.

  • Also bin ich an der richtigen Stelle, wenn ich eine hierarchische App baue, deren Wurzel ein Nav-Controller ist? Ich habe gesehen, dass ich die Hauptansicht so anpassen kann, dass eine angepasste Tabelle angezeigt wird, in der jede Zelle als eine Schaltfläche fungieren kann, um den jeweiligen View + Viewcontroller zu erzeugen. Von hier aus kann ich die 'Blattknoten' dieser Hierarchie von Ansichten/Viewcontrollern weiter aufbauen, oder? Obwohl ich die Animation nicht mag, die standardmäßig den Nav-Controller bietet, nehme ich an, ich kann es loswerden.

  • Also um es auf einfache Weise zusammenzufassen: Ich möchte ein Menü wie erhalten solche, die normalerweise in Cocos2d-Apps zu sehen sind.

Es ist frustrierend, dies zu fragen, ich weiß es einfach sein muss, aber ich finde die Dokumentation ziemlich Chaos als gut, wie die Beispiele, die ich gesehen habe .. GUI-Programmierung es Kurve eine harte Lernens sein:/

Vielen Dank für alle Antworten im Voraus, und entschuldigen Sie mich für diese lange Post. So

+3

+1 Gut durchdachte und detaillierte Frage. Du hast dir etwas Zeit genommen und ich schätze die Mühe. – TechZen

+1

Ich würde nur hinzufügen, dass das Cocoa Touch-Modell nicht MVC, sondern ein PAC (Präsentation, Abstraktion, Kontrolle) -Modell ist. Es ist ein sehr einfaches Konzept. Sie können das grundlegende auf wikipedia finden: http://en.wikipedia.org/wiki/Presentation-abstraction-control –

+0

Danke, es klärt einige Konzepte. Obwohl ich noch viel mehr Arbeitsstunden brauche, um das Delegate/Controller/View-Modell zu verstehen. – XF01

Antwort

7

, bin ich an der richtigen Stelle, wenn ich eine hierarchische App bauen, wo seine Wurzel ist ein nav-Controller?

Fast. Ein Nav-Controller (obwohl er eine Unterklasse von UIViewController ist) kontrolliert nicht Ansichten, sondern andere View-Controller. Der Nav-Controller drückt und öffnet die View-Controller, was wiederum bewirkt, dass die jeweiligen Ansichten des Controllers geladen und sichtbar werden.

Daher ist die „Stammansicht“ ist tatsächlich die Ansicht, die durch den View-Controller gesteuert wird, der in der nav Controller topViewController Eigenschaft ist.

Die AppDelegate dient der nav Controller zu halten und es zu sagen, welche Controller-Ansicht zunächst auf den Stapel zu schieben. Danach sagen die View-Controller dem Nav-Controller, wann er sie drücken und loslassen soll.

Ansonsten sind Sie auf dem richtigen Weg. Sie sollten immer versuchen, Informationen auf einer mobilen Plattform in einer hierarchischen Weise darzustellen, beginnend mit dem allgemeinsten am oberen Rand und wachsend spezifischer, während Sie einen Drilldown durchführen.

Und Sie sollten bei der Suche nach diesem verwirrenden nicht peinlich sein. 90% der Einführungs/Tutorial-Infos, einschließlich Bücher und Apple-Ressourcen, konzentrieren sich auf die tollen Aspekte der Benutzeroberfläche und sagen Ihnen so gut wie nichts über das tatsächliche Anwendungsdesign oder wie alle Teile konzeptionell zusammenpassen.

+0

Danke! Also sollte ich einen Init/RootViewController erstellen, der mit der MainWindow-Nib verbunden ist und einen Nav-Controller unterklassifiziert. Und von hier aus bauen Sie die Hierarchie weiter. Aber welche Rolle spielt der Delegierte? Überall lese ich, dass es als der Controller gesehen werden muss, während ich es als eine "Haupt" C typische Funktion betrachte, und die ViewControllers sind die eigentlichen Controller. Ich bin ziemlich unordentlich .. – XF01

+1

Sie Unterklasse UINavigationController nicht, fügen Sie einfach eine Instanz zu Ihrem App-Delegat als eine Eigenschaft. Dann setzen Sie einen normalen View-Controller als topContoller des Nav-Controllers. Der Anwendungsdelegat ist ein Objekt, das bestimmte Aufgaben für das UIApplication-Objekt behandelt. Insbesondere werden die Funktionen behandelt, die in jeder App angepasst werden müssen, z. B. welche Ansichten geöffnet werden sollen. Es ist nicht wirklich analog zu einer Main() -Funktion. – TechZen

+0

Danke, Ihre Kommentare sind sehr hilfreich. Ich beginne, die Grundlagen zu verstehen. Das Lesen der API ist der Schlüssel, wie mit allem. – XF01

1

Sie recht, wie wenig Informationen über App Delegierten abgedeckt Controller nav. Ich habe graben und versuchen, alle meine Bildschirme zu verbinden usw. Viel Spaß beim Anschauen meiner Apps fangen an, mehr als nur ein Frankenstein Monster UI aussehen. ahahah

Die Itunes dev Videos sind für die Suche auf Push- und Pop-Stack UIViews Theorie. Ich fand, dass sie sich ein wenig schnell bewegten, aber nachdem sie sie beobachtet hatten, machten die Hände mehr Sinn. Ich habe mich gezwungen, sie alle zu beobachten und ein wirklich gutes Gefühl dafür zu bekommen, was los ist. Ich hoffe, dass bald eine nette App funktioniert.

Verwandte Themen