Die View-Controller-Programmieranleitung gibt dies in Bezug auf die Verwendung des View-Controllers an:
Jedes benutzerdefinierte View-Controller-Objekt, das Sie verwenden create ist verantwortlich für die Verwaltung aller der Ansichten in einer einzigen Ansicht Hierarchie. In iPhone-Anwendungen, die Ansichten in einer Ansichtshierarchie decken traditionell den gesamten Bildschirm ab, aber in iPad-Anwendungen können sie Bedecken Sie nur einen Teil des Bildschirms. Die Eins-zu-eins-Entsprechung zwischen ein View - Controller und die Ansichten in seinem Ansichtshierarchie ist das Schlüsseldesign Berücksichtigung. Sie sollten nicht verwenden mehrere benutzerdefinierte Ansicht Controller zu Verwalten Sie verschiedene Teile desselben Ansichtshierarchie Ebenso du sollte keine einzelne benutzerdefinierte Ansicht verwenden Controller-Objekt, um mehrere zu verwalten Bildschirme Inhalt.
Ich verstehe, dass wenn wir mehrere benutzerdefinierte Ansichts-Controller verwenden, um die Teile einer Ansicht zu steuern (dh ein View-Controller, um Unteransichten einer Hauptansicht zu verwalten, die wiederum von einem View-Controller verwaltet wird), die Standardmethoden wie folgt:
%Vor%usw. usw. wird nicht aufgerufen.
Gibt es sonst noch einen anderen Grund, warum wir nicht mehrere View-Controller verwenden sollten, um die jeweiligen Subviews einer View zu verwalten?
Die Dokumentation bietet auch eine alternative Lösung, die lautet:
Hinweis: Wenn Sie eine Ansicht teilen möchten Hierarchie in mehrere Teilbereiche und Verwalten Sie jede separat, verwenden Sie generische Controllerobjekte (benutzerdefiniert Objekte, die von NSObject abstammen) statt View-Controller-Objekte zu Verwalten Sie jeden Teilbereich. Dann benutze eine einzige View Controller-Objekt zur Verwaltung der generische Controller-Objekte.
Es wird jedoch nicht erwähnt, warum mehrere View-Controller nicht bevorzugt werden sollten. Meine Frage ist:
Warum sollten wir es nicht so bevorzugen?
Ich mache mir Sorgen, weil ich es vorziehe, die UIViewController-Unterklasse zur Verwaltung meiner Ansichten zu verwenden, da ich sie jedes Mal aus der Nib lade und die Nibs für jeden View-Controller getrennt habe. Es wird leicht, die Änderungen in späteren Phasen des Projekts zu berücksichtigen. Ist das falsch? Sollte ich unbedingt meinen Programmierstil ändern, oder ist es in Ordnung, wenn ich mit diesem Ansatz fortfahre?
Danke,
Raj
Nun, ich würde sagen "solange es funktioniert", du kannst so weitermachen wie du! Aber um die Dinge "sauberer" zu halten, benutze ich meine eigenen Objekte. Da ViewControllers mit anderen allgemeinen Funktionen (wie der Arbeit mit Navigations-Controllern und Tab-Bar-Controllern) entworfen wurden, ist es für eine einfache Verwendung ein wenig "schwer", wie Sie es tun. Außerdem werden einige Ereignisse, wie Sie bereits erwähnt haben, nur aufgerufen, wenn die ViewController-Ansicht zum Hauptfenster hinzugefügt wird.
Können Sie Ihre eigenen Objekte nicht mit dem Interface Builder verwenden? Wenn Sie ein (oder mehrere) UIView IBOutlet (s) erstellen, sollte es genauso funktionieren.
Ich habe eine App, die zwei UIViewControllers auf einem einzigen Bildschirm verwendet. Das Kind ist ein UITableViewController. Ich verlasse mich nicht auf das UIViewController-Verhalten des Kinds - nur auf die UITableViewController-Methoden. Dies ist praktisch, da es andere Fälle gibt, in denen der untergeordnete UITableViewController den gesamten Bildschirm verwaltet. Und in diesem Fall verwendet es die UIViewController-Methoden. Fragwürdiges Design? Könnte sein. Es hat seit zwei Jahren gut funktioniert. Aber ich bin mir nicht sicher, ob ich das Muster empfehlen würde.
Tags und Links iphone cocoa-touch uiview uiviewcontroller uikit