2017-06-11 3 views
0

Ich bin neu in Xcode zu segue und habe Schwierigkeiten zu verstehen, wie UITabbar funktioniert.Wie ändere ich die Ansicht, wenn ich auf eine UITabBar über ein Segment klicke?

enter image description here

Wesentlichen solange ich innerhalb der ersten Registerkarte „Wohlbefinden“ bleiben, sollte ich in der Lage sein, drei Menüpunkte zu sehen. Jeder Menüeintrag sollte eine andere Ansicht anzeigen.

Ich bin ein bisschen verloren, wie ich eine andere Ansicht je nach der Menüelementauswahl laden kann. Theoretisch könnte ich nur zwei weitere Ansichten wie "Wellbeing" mit einer ähnlichen Menüleiste erstellen. Wenn ich in der Menüleiste herumklicke, würde ich die Ansicht auf diese Ansichten umleiten.

Aber ich bin mir nicht sicher, wie man das via Überleitung erreicht. Ein Rat würde sehr geschätzt werden.

Dank

+0

arbeiten Warum nicht einfach containerViews innerhalb dieser Ansicht verwenden und die, die Sie zuerst angezeigt werden soll, wenn die Ansicht erscheint wie 'view.bringSubview (toFront: preferredFirstView) 'und schickte den Rest in den Hintergrund wie' view.sendSubview (toBack: otherViews) '' Wenn diese Buttons ausgewählt sind, kehren Sie sie um, aber sie werden benötigt. – CarpenterBlood

+0

Interessante Idee. Und ich könnte immer noch jede Ansicht einzeln in IB entwerfen und sie auf diese Weise in die sichtbare Ansicht laden. Ich habe nicht das Gefühl, dass dies der offizielle Weg ist, dies zu erreichen, aber immer noch ein guter Weg. Kannst du mir bitte einen Code als Antwort zeigen? – Houman

+0

Antwort hinzugefügt und ja jeder containerView hat einen eingebetteten ViewController, für den Sie eine ganz neue ViewController-Klasse erstellen. Ich persönlich bevorzuge diesen einen Tab-Bar-Controller, weil ich gerne die Farben aller meiner Schaltflächen basierend auf den Inhalten der Ansicht festlegen und es gibt immer Null mit TabbarController – CarpenterBlood

Antwort

0

hinzufügen ContainerViews der Ansicht innerhalb der einzelnen Registerkarte. Machen Sie @IBOutlets für jeden ContainerView. Stellen Sie dann Ihre bevorzugte Ansicht unter Last so auf sichtbar ein.

override func viewDidLoad() { 
    super.viewDidLoad() 
    view.bringSubview(toFront: preferredView) 
} 

Dann Ihre Schaltfläche Aktion Methoden hinzufügen und in ihnen umkehren alle Ihre Ansichten um aber sie müssen wie so sein.

@IBAction func otherViewAction(_ sender: Any) { 
    view.bringSubview(toFront: otherView) 
    view.sendSubview(toBack: preferredView) 
    //do anything else you may need to do when the view is switched 
} 

enter image description here

Dies ist ein Ich habe auf

+0

Es tut mir leid, ich verstehe nicht, wie dies funktionieren sollte. Ich kann füge dem Viewcontroller das IBOutlet der Containeransicht hinzu. Aber wie lade ich die Ansichten? – Houman

+0

Die Ansichten werden automatisch geladen, wenn der ViewController mit den verschachtelten containerViews geladen wird. In der ViewController-Klasse mit den verschachtelten containerViews erstellen Sie die containerView @IBOutlets, und in dieser Klasse zeigen/verbergen Sie jede Ansicht basierend auf den Einstellungen. Sie können es weiter anpassen, indem Sie für jeden eingebetteten ViewController benutzerdefinierte ViewController-Klassen erstellen – CarpenterBlood

Verwandte Themen