Ich habe kürzlich entdeckt, dass UIView
s nur UIViewController
s haben sollte, wenn sie das gesamte Fenster ausfüllen (oder von einem anderen UIViewController
wie einem UINavigationController
oder UISplitViewController
verwaltet werden). Dieses Angebot stammt aus der Dokumentation für UIViewController:Soll View-Logik in eine UIView oder (falls vorhanden) ihren UIViewController gehen?
Sie sollten keine View-Controller verwenden, um Ansichten zu verwalten, die nur einen Teil ihres Fensters füllen - also nur einen Teil des durch das Rechteck des Anwendungsinhaltes definierten Bereichs. Wenn Sie eine Benutzeroberfläche mit mehreren kleineren Ansichten haben möchten, betten Sie sie alle in einer einzigen Stammansicht ein und verwalten Sie diese Ansicht mit Ihrem Ansichtscontroller.
Normalerweise lege ich meine Ansichtslogik in die UIView, selbst wenn sie von einem UIViewController verwaltet wird, aber oft muss ich auf die Eigenschaften von UIViewController wie die Eigenschaft navigationController zugreifen. UIViews sollten jedoch ihren UIViewController nicht kennen.
Meine Schlussfolgerung ist, dass View-Logik in einem UIView UIViewController gehen sollte, wenn eine existiert, und in der UIView selbst sonst.
Alternativ ist es besser, eine Controller-Klasse für eine Ansicht zu erstellen, die nicht eine Unterklasse von UIViewController ist? UIPopoverController (eine NSObject-Unterklasse) scheint diesem Muster zu folgen, obwohl in den meisten Fällen (UIButton usw.) keine dedizierten Controller-Klassen angezeigt werden.
Sollten UIViewControllers jemals auch ohne eine nib/xib-Datei (d. H. Eine UIView, die im Code erstellt wird) verwendet werden? – titaniumdecoy
Persönlich verwende ich selten NIB-Dateien, also ja, Sie können UIViewController und Freunde ohne sie absolut verwenden. – Alex
Die Tatsache, dass -initWithNibName: bundle: UIViewController der benannte Initializer ist, scheint darauf hinzuweisen, dass es nicht ohne eine Spitze verwendet werden soll. – titaniumdecoy