Swift - Tab Bar ohne TabBarController

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Swift - Tab Bar ohne TabBarController

    Moin Leute,

    momentan beginne ich den Einstieg in Swift und bin bei den UI-Elementen abgekommen, wo ich ein bisschen hin und her probiere.

    Ich habe im Moment ein kleines Problem. Und zwar versuche ich in einem ViewController eine TabBar hinzuzufügen, dass weitere ViewController anzeigen soll und zwar ohne einen TabBarController.
    Alle Tutorials die ich bisher gesehen habe, beginnen immer mit dem Einfügen des TabBarControllers. Ich will jedoch, dass nur ein ViewController die Tab Bar im Buttom-Bereich angezeigt wird.
    Kann mir da jemand bei behilflich sein und mir Ratschläge geben oder einen Lösungsweg schildern?

    Ich wäre euch sehr verbunden.
    Gruß Felix.
  • Moin,
    heute saß ich wieder vor der TabBar.
    Leider bekomme ich es überhaupt nicht hin.
    Ich weiß nicht, wie ich beim drücken der TabBar-Items den Content eines anderen Views anzeigen lassen kann.
    Und das alleine mit der TabBar ohne die Nutzung eines TabViewControllers
  • Das UITabBarDelegate Protocol bietet die Methode tabBar(_:didSelect:), um die Auswahl eines TabBar Items zu erkennen.

    Beim ViewController gibt es dann z.B. die Methoden addChild(_:) und removeFromParent(), mit dem man einen ViewController als Child zu einem ViewController hinzufügen kann. Weiterhin musst Du dann noch den view des ViewController mit addSubview(_:) hinzufügen.Per removeFromSuperview() kannst Du diesen dann auch wieder entfernen.

    Weitere Methoden solltest Du eigentlich nicht benötigen, um Dein Vorhaben zu realisieren. ;)
  • MCDan ich danke dir für deine hilfreiche Antwort.
    Ich habe es geschaft von der TabBar aus einen ViewController auszurufen. Mein Problem ist jetzt aber, dass die TabBar beim Aufrufen des zweiten ViewControllers nicht mehr angezeigt wird.


    Quellcode

    1. import UIKit
    2. class ViewController: UIViewController, UITabBarDelegate {
    3. @IBOutlet weak var MeineTabBar: UITabBar!
    4. override func viewDidLoad() {
    5. super.viewDidLoad()
    6. self.view.addSubview(MeineTabBar)
    7. self.MeineTabBar.delegate = self
    8. print("App ist läuft")
    9. }
    10. func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    11. let MeinNeuesStoryboard = storyboard?.instantiateViewController(withIdentifier: "ID_ZweiterViewController")
    12. addChild(MeinNeuesStoryboard!)
    13. view.addSubview((MeinNeuesStoryboard?.view)!)
    14. controller?.didMove(toParent: self)
    15. }
    16. }
    Alles anzeigen
  • Ich tippe jetzt mal, dass der View von dem MeinNeuesStoryboard Controller die TabBar überlagert. ;)

    Entweder verwendest Du passende Layout Constraints, dass dies nicht passiert oder Du erstellst mit der TabBar noch einen "Content View" der quasi oberhalb der TabBar liegt und in den Du dann die Views der ViewController packen kannst.

    iOS analysiert nicht welche Views sich als Subview in einem View befinden und positioniert diese automatisch. Dies musst Du als Programmiere schon in die Hand nehmen. ;)