Verwenden von Custom View Controllern zum Verwalten verschiedener Teile derselben Ansichtshierarchie

9

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

    
Raj Pawan Gumdal 02.12.2010, 09:56
quelle

2 Antworten

3

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.

    
Julien 02.12.2010, 11:08
quelle
0

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.

    
William Jockusch 01.06.2012 03:04
quelle