Ich habe kürzlich entdeckt, dass UIView
s sollten nur haben UIViewController
s, wenn sie das gesamte Fenster ausfüllen (oder von einem anderen Fenster verwaltet werden) UIViewController
wie zum Beispiel ein UINavigationController
o UISplitViewController
). Dieses Zitat stammt aus der Dokumentation für UIViewController :
Sie sollten keine View-Controller verwenden, um Views zu verwalten, die nur einen Teil ihres Fensters ausfüllen, d.h. nur einen Teil des Bereichs, der durch das Rechteck des Anwendungsinhalts definiert ist. Wenn Sie eine Schnittstelle haben möchten, die aus mehreren kleineren Views besteht, betten Sie sie alle in einen einzigen Root-View ein und verwalten diesen View mit Ihrem View-Controller.
In der Regel lege ich meine View-Logik in die UIView, auch wenn sie von einem UIViewController verwaltet wird. Dennoch muss ich oft auf Eigenschaften des UIViewControllers zugreifen, z. B. auf die Eigenschaft navigationController. UIViews sollten jedoch nicht von ihrem UIViewController wissen.
Meine Schlussfolgerung ist, dass View-Logik in einem UIView's UIViewController gehen sollte, wenn ein vorhanden ist, und in der UIView selbst sonst.
Ist es alternativ besser, eine Controller-Klasse für eine Ansicht zu erstellen, die ノット eine Unterklasse von UIViewController? UIPopoverController (eine NSObject-Unterklasse) scheint diesem Muster zu folgen, obwohl in den meisten Fällen (UIButton usw.) Views keine eigenen Controller-Klassen zu haben scheinen.