2014-07-21 12 views
8

Also hier ist das Problem, das ich versuche zu lösen.UIView vs Container Ansicht

In jedem viewController Ich versuche, Anzeigen und die tatsächlichen Steuerelemente einzufügen. Ich habe ein paar Tutorials auf raywenderlinch.com beendet, um zu verstehen, wie die Leute professionell Werbung in ihrer App platzieren. Sie verwendeten UIViews, um zwei Ansichten unter der Hauptansicht des Ansichtscontrollers zu haben. So habe ich völlig verstanden, dass man die Anzeigen und eine andere hält die tatsächlichen App-Inhalte halten. Wenn die Anzeige geladen ist, nehmen Sie den Bildschirm auf oder lassen Sie die andere Ansicht den gesamten verfügbaren Bereich anzeigen.

Nachdem ich zurück zu xcode kam, fing ich an zu programmieren, wie ich dort gelernt habe. aber als ich UIView auf Storyboard fallen ließ, sah ich containerView, die ich glaube, war nicht vorhanden, als das Tutorial geschrieben wurde.
So bin ich hier, um über die beiden Ansatz und ihre Vor- und Nachteile zu fragen.
Also im Grunde seine UIView vs ContainerView. Welchen Weg sollte ich machen und warum?
Jede Hilfe würde sehr geschätzt werden.

+1

massive Erklärung! -> http://StackOverflow.com/a/23403979/294884 – Fattie

+0

@JoeBlow - Schönes Beispiel für den Beginn einer Szene, * aber * Ich sehe nicht, wie dieser Link die Frage nach dem Warum/Wann eine UIContainerView verwenden. IMHO, dieser Top-Level "Container View" könnte genauso gut eine normale "Ansicht" sein.Wie die untenstehende akzeptierte Antwort erklärt, "verwenden Sie UIContainerView, wenn Sie * einen anderen View-Controller * einbetten müssen". Wenn Ihre Szene also nicht mehrere View ** Controller ** benötigt, ist UIContainerView nicht erforderlich. – ToolmakerSteve

Antwort

1

Wenn Sie im Detail diese Behälter Ansicht von UIView Klassentyp zu sehen. Um zu verstehen, warum wir containerView brauchen, sollten Sie unten sehen:

In den meisten Fällen ist ein Container-View-Controller genau wie ein Content-View-Controller. Es verwaltet Sichten und Inhalte, koordiniert mit anderen Objekten in Ihrer App und reagiert auf Ereignisse in der Responder-Kette. Bevor Sie einen Container-Controller entwerfen, sollten Sie bereits mit dem Entwurf von Inhaltsansicht-Controllern vertraut sein. Die Entwurfsfragen in "Erstellen von benutzerdefinierten Inhaltsansichtscontrollern" gelten auch beim Erstellen von Containern.

für mehr Details über Container Ansicht goto link Aber bevor Sie beginnen Sie ein Verständnis für

haben sollten und auch können Sie überprüfen, this tutorial, wie Container-Ansicht zu verwenden.

So können Sie für beide Ansätze gehen. Hoffe das wird dir helfen. Happy Coding :)

+0

Beantwortet die Frage nicht. Die Frage ist, warum eine Containeransicht anstelle einer regulären UIView verwendet werden sollte, da * any * view andere Ansichten enthalten kann. Um nützlich zu sein, müssen Sie klären, was eine Containeransicht bewirken kann, die eine reguläre Ansicht nicht kann. (Aber es enthält Links, die für jemanden nützlich sein könnten, also habe ich keinen Downvote gemacht, obwohl er die Frage nicht beantwortet.) – ToolmakerSteve

22

Sie verwenden UIView, wenn Sie bereits eine Ansicht haben und Sie brauchen nicht einen dedizierten View-Controller zu bauen und Interaktionen in ihm zu behandeln.

Von UIView Hilfeseite:

UIView Objekt beansprucht einen rechteckigen Bereich seiner umschließenden superview (Mutter in der Hierarchieansicht) und ist für alle in dieser Region Zeichnung ...

vereinfachte Struktur: YourViewController--- (hat) --->UIView


Sie verwenden UIContainerView wenn Sie eine andere Ansicht-Controller in einen einbetten müssen, die Sie bereits haben.Der eingebettete Ansicht-Controller ist dafür zuständig, eine Ansicht für die Region zurückzusenden, die die UIViewContainer belegt. Daher weiß Ihre UIContainerView, welcher Ansicht Controller UIView innerhalb der Region, die es belegt, zu rendern.

Vom UIContainerView Hilfeseite:

Container Ansicht definiert einen Bereich innerhalb einer Ansicht Subgraphen des View-Controller, die ein Kind View-Controller enthalten.

vereinfachte Struktur: YourViewController--- (hat) --->SubViewController--- (hat) --->UIView

That SubViewController gibt eine Sicht zurück und behandelt ihre Ereignisse.

3

Als alternative Antwort können Sie anstelle der technischen Unterschiede auch den Anwendungsfall berücksichtigen. Zum Beispiel: Warum eine Containeransicht verwenden?

Eine häufige Verwendung von Containeransichten ist die Wiederverwendung (Freigabe) einer Ansicht direkt im Storyboard. Zuvor erforderte die Wiederverwendung einer Ansicht das Erstellen einer separaten "xib" -Datei und das programmatische Hinzufügen dieser Ansicht beim Laden des Ansichtscontrollers.

example use case of a container view

Das obige Bild ist von this extrem einfach, einfache Anleitung zu folgen, die Sie geht durch wie einen Container im Hinblick auf Setup, das zwischen 2 + View-Controller gemeinsam genutzt wird.

Ein paar andere Gedanken auf, wenn es zu benutzen:

  • Eine Navigationsleiste Teil eines UINavigationController ist, which is a container view controller. Wenn Sie also eine benutzerdefinierte Alternative erstellen möchten, verwenden Sie wahrscheinlich eine Containeransicht.
  • Ein Container kann jederzeit helfen, wenn Sie vorübergehend eine komplexe Sicht auf Ihre aktuelle VC anzeigen möchten, aber keine andere VC modal präsentieren können/wollen. Mit dieser Methode können Sie diese temporäre Ansicht im Interface Builder erstellen, automatische Layout-Einschränkungen für sie einrichten, usw.
  • Ich habe auch eine guide gefunden, die erklärt, dass es je nach Situation eine Möglichkeit gibt, verschiedene Containeransichten zu wechseln Unterabschnitte haben, die sehr dynamisch sind, ohne diese Unterabschnitte programmatisch erstellen zu müssen. Ein Bild von diesem Leitfaden, Ausstellen, was ich bin auf:

using multiple container view options

Hoffentlich hilft Menschen, die herauszufinden versuchen, wenn ein Behälter Blick auf sie zutrifft. Wenn Sie andere Anwendungsfälle haben, bearbeiten/fügen Sie sie hinzu oder fügen Sie sie in die Kommentare ein!