Wie kann ich bei Swift zwischen zwei untergeordneten View-Controllern wechseln?

9

Ich versuche, zwischen zwei untergeordneten View Controllers in einem bestimmten Container View zu wechseln. Ich habe eine Navigation Controller mit einem Menü ( Table View , um die verschiedenen Optionen des Menüs zu machen).

Jedes Mal, wenn ich auf eine Option des Menüs klicke, möchte ich das Kind von Container View ändern, aber ich bekomme das Kind über Navigation bar und Table View (sie werden nicht angezeigt, aber sie sind unter dem neuen Kind Controller anzeigen).

Das Schema meiner Main.storyboard ist wie folgt:

%Vor%

Ich habe den folgenden Code auf tableView function (in dem ich feststelle, wenn eine Option des Menüs angeklickt wird), um den untergeordneten View-Controller der Container-Ansicht zu ändern:

%Vor%

Dieser Code funktioniert fast gut. Das Problem besteht darin, dass der neue untergeordnete View Controller über der Navigationsleiste und der Tabellenansicht (dem Menü) angezeigt wird. Es belegt also den gesamten Bildschirm und passt nicht in die Containeransicht.

Sollte ich meinem Code etwas hinzufügen oder verwende ich meinen Code falsch? Ich habe viel darüber gesucht, aber die meisten Lösungen sind in objective-c oder funktioniert nicht für mich.

BEARBEITEN: Nachdem ich viele Stunden gesucht habe, vermute ich, dass es etwas mit dem eingebetteten Segment zu tun hat, das den root View Controller mit master View Controller verbindet, aber nicht einbetten kann das neue Kind in Container View . Der Code, den ich versuche, ist:

%Vor%

oder

%Vor%

aber keiner von ihnen bettete das Segment ein. Zeigen Sie einfach newChild auf dem gesamten Bildschirm an.

Vielen Dank im Voraus!

    
Francisco Romero 05.09.2016, 10:07
quelle

6 Antworten

3

Sie sollten das IBOutlet für ContainerView und addSubview zu diesem IBOutlet

haben %Vor%

oder

%Vor%     
H.Yuu 09.09.2016, 19:28
quelle
0

Versuchen Sie kurz bevor Sie currentController .addChildViewController(newChild) aufrufen:

%Vor%

Dies sollte den newChild view-Controller innerhalb der Grenzen Ihrer Containeransicht anstelle des Vollbilds anzeigen.

    
ClayJ 08.09.2016 07:55
quelle
0

Sie möchten presentViewController nicht verwenden und ich denke nicht, dass die Verwendung eines Segments auch richtig ist, da dies die Vollbildabdeckung verursacht.

Ich denke, Sie sind ursprünglich auf dem richtigen Weg, brauchen Sie Ansichten oder Viewcontrollers?

Für UIViews können Sie einfach Ihre Ansicht mit den gewünschten Werten füllen und dann Ihre Containeransicht durch Ihre neue Ansicht ersetzen. Sie können die UIView auch für eine XIB- oder Storyboard-Szene laden.

Für UIViewControllers, denke ich, wenn Sie eine bestimmte Logik haben, in der sie Lebenszyklusmethoden sehen, müssen Sie sie als untergeordnete viewcontrollers hinzufügen und die Containeransicht durch die viewController.view ersetzen.

Schließlich triggern Sie nur die Logik in Ihrer didselectrowatindexpath -Methode. Probieren Sie ein einfaches Beispiel aus, erstellen Sie eine UIView mit einer orangefarbenen Hintergrundfarbe und führen Sie self.containerView = orangeView aus.

Lassen Sie es mich wissen, wenn dies nicht klar ist, und ich freue mich, falls erforderlich, Codebeispiele bereitzustellen.

    
JingJingTao 09.09.2016 18:30
quelle
0
%Vor%     
Rutvik Kanbargi 13.09.2016 06:36
quelle
0

Machen Sie den Ausgang des Containers und fügen Sie Ihren Kind-Controller wie folgt hinzu: self.addSubview(self.currentViewController!.view, toView: self.containerView)

Es kann Ihnen helfen.

    
Prabhat 14.09.2016 07:01
quelle
0

Die Frage wird beantwortet, aber wie ich in Ihrem Code sehe, empfehle ich Ihnen, den Rand der Kindansicht an die Elternansicht anzuheften. Wie unten:

%Vor%     
Phạm Tuấn Anh 21.08.2017 10:09
quelle