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:
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:
oder
%Vor% aber keiner von ihnen bettete das Segment ein. Zeigen Sie einfach newChild
auf dem gesamten Bildschirm an.
Vielen Dank im Voraus!
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.
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%Tags und Links ios swift uinavigationcontroller uistoryboardsegue uicontainerview