Ist es in iOS normalerweise eine schlechte Programmierpraxis, die Ansicht eines verschachtelten View Controllers in der Ansicht von UIViewController zu haben? Angenommen, ich wollte eine Art interaktives Element, das auf Berührungen des Benutzers reagiert, aber nur etwa 25% des Bildschirms einnimmt.
Ich nehme an, ich würde diesen verschachtelten Ansichts-Controller zu meinem UIViewController hinzufügen, indem ich Folgendes sage:
[self.view addSubview: nestedViewController.view];
ios
uiviewcontroller
viewcontroller
Skyler
quelle
quelle
Antworten:
Nein, dies ist im Allgemeinen ein gutes Design. Es hilft, Ihre View Controller präzise zu halten. Sie sollten jedoch das Containment-Muster des View Controllers verwenden. Lesen Sie die folgende Dokumentation.
Implementieren eines Container View Controllers
Dies ist unglaublich einfach mit Interface Builder mit Storyboards einzurichten. Sehen Sie sich die Containeransicht in der Objektbibliothek an.
Hier ist ein erfundenes Beispiel in einem Storyboard. In diesem Beispiel hätten Sie 4 Ansichts-Controller, einen mit den 3 Containern und einen für jeden Container. Wenn Sie den Controller ganz links mit allen Containern anzeigen, initialisiert das Storyboard automatisch die anderen 3. Sie können über die
childViewControllers
Eigenschaft auf diese untergeordneten Ansichtscontroller zugreifen, oder es gibt eine Methode, mit der Sie die Zielansichtscontroller überschreibenprepareForSegue:sender:
und erfassen können der Segue wird gleich gerufen. Dies ist auch ein guter Punkt, um bei Bedarf Eigenschaften an die untergeordneten Ansichtscontroller zu übergeben.quelle
Ich habe diesen Code in den übergeordneten Ansichts-Controller eingefügt. Es funktioniert großartig für mich.
Obj C.
Swift :
Eine andere Option ist die Verwendung von IB und die Containeransicht. UIViewController wird automatisch angezeigt (in diesem Fall XCode 9):
quelle
Hier ist meine Swift 3-Lösung, die auf der Antwort von Swift Developers On FB basiert
quelle