2016-05-14 6 views
0

Ich erstellte eine manuelle UITabbar und ich erstellte 3 TabBarItems, die ich verwenden möchte, um durch andere Viewcontrollers zu wechseln. Ich kann keine Möglichkeit finden, die BarItems zu verwenden, um durch andere Viewcontroller in der App zu wechseln. Gibt es eine Möglichkeit, Viewcontroller programmgesteuert zu wechseln? Ich benutze Swift.Wie benutze ich eine manuelle UITabbar und benutze sie um andere ViewController zu wechseln?

Hier ist ein Blick auf meine ViewController.swift Datei ...

class ViewController: UIViewController, UITabBarDelegate { 

    // All Outlets Connected to StoryBoard 
    @IBOutlet var BTN: UIButton! 
    @IBOutlet var BTN2: UIButton! 
    @IBOutlet var BTN3: UIButton! 
    @IBOutlet var BTN4: UIButton! 
    @IBOutlet var tbl: UITableView! 
    @IBOutlet var Button: UIBarButtonItem! 
    @IBOutlet var AllButton: UITabBarItem!//First Item 
    @IBOutlet var TabBar1: UITabBar! //Manual UITabbar 
    @IBOutlet var PriorityButton: UITabBarItem!//Third Item 
    @IBOutlet var ClassesButton: UITabBarItem!//Second Item 
    @IBOutlet var Bar: UINavigationItem! 

    //Other Variables 
    var varView = Int() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     if revealViewController() != nil { 
      Button.target = revealViewController() 
      Button.action = #selector(SWRevealViewController.revealToggle(_:)) 
     } 

     self.view.backgroundColor = UIColor(red: 50/255.0, green: 132/255.0, blue: 255/255.0, alpha: 1.0) 

     BTN.alpha = 1.0 
     BTN4.alpha = 0 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func BTNClicked(sender: AnyObject) { 
     UIView.animateWithDuration(1.0, animations: ({ 
      self.BTN2.transform = CGAffineTransformMakeTranslation(0, -90) 
      self.BTN3.transform = CGAffineTransformMakeTranslation(0, -180) 
      self.BTN4.transform = CGAffineTransformMakeTranslation(0, 0) 
      self.BTN.alpha = 0 
      self.BTN4.alpha = 1.0 
     })) 
    } 

    func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { 
     //This method will be called when user changes tab. 

     //Do I use this? I am using a manual Tabbar just to remind you guys. 
    } 

Antwort

0

UITabBar zeigt nur eine Tab-Leiste und erzählt seine Delegierten, wenn der Benutzer auf eine andere Registerkarte auswählt. UITabBarController tut genau das, was Sie zu haben scheinen: Es verwaltet eine Sammlung von View-Controllern und wechselt zwischen diesen, wenn der Benutzer verschiedene Registerkarten auswählt. Es gibt nichts Magisches oder Unprogrammiertes über die Verwendung von UITabBarController - Wenn Sie keine Storyboards verwenden möchten, können Sie immer einen UITabBarController im Code konfigurieren. Wenn Sie uns nicht etwas mitteilen, sollten Sie UITabBarController verwenden. Wenn Sie wirklich nur UITabBar verwenden möchten, können Sie UITabBarDelegate in Ihrem Ansichtscontroller implementieren und den Ansichtscontroller als Delegat der Registerkartenleiste festlegen. Wenn der Benutzer auf eine Registerkarte klickt, wird Ihre -tabBar:didSelectItem: Methode aufgerufen und Sie können tun, was Sie wollen, einschließlich zu einer anderen Ansicht wechseln. Die Tab-Leiste schaltet nicht für Sie um - UITabBar ist nur die Tab-Ansicht, ohne Logik für die Verwaltung von Ansichten oder View-Controller.

Der Titel Ihrer Frage besagt, dass Sie zwischen Ansicht Controller, nicht nur Ansichten wechseln möchten. Wahrscheinlich möchten Sie jedoch, dass die Tableiste immer sichtbar ist. Das bedeutet, dass Sie einen Ansichtscontroller erstellen müssen, der eine Liste von Ansichtscontrollern verwaltet, die Registerelementen zugeordnet sind, über einen untergeordneten Ansichtscontroller verfügen und UITabBarDelegate so implementieren, dass er den untergeordneten Ansichtscontroller ersetzt, wenn -tabBar:didSelectItem: aufgerufen wird. Kurz gesagt, du musst duplizieren, was UITabBarController bereits tut.

+0

Gibt es eine Möglichkeit, die Tabbar nur zu verwenden, um durch Ansichten zu wechseln, nicht der UITabBarController? – AS2345

+0

@ AS2345 Siehe meine Bearbeitung oben. – Caleb

+0

@Caleb Also verwende ich die '-TabBar: didSelectItem:' Methode, die du erwähnt hast, um "Push" zu einem anderen ViewController zu verschieben. Problem ist, dass es ein leeres Leerzeichen belässt, wo die TabBar in der ursprünglichen VC war. Wie kann ich die Tabbar erscheinen lassen, wenn ich zu verschiedenen VCs übergehe? – brkr