2017-11-06 5 views
0

Ich benutze einen UITabBarController und ich möchte eine Schaltfläche in einer Ansicht verwenden, um zur nächsten Ansicht zu wechseln, ohne auf die Leiste klicken zu müssen. Wie könnte ich das programmatisch machen?Swift 4 - Wie zwischen ViewControllern von einem UITabBarController programmgesteuert zu wechseln

Storyboard

class PlayTableBarViewController: UITabBarController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    func nextView() { 
     print(self.viewControllers!) 
     self.selectedViewController = self.viewControllers![self.selectedIndex + 1] 
     self.show(self.selectedViewController!, sender: nil) 
    } 
} 

class StartVC: UIViewController { 
    private var _fatherVC: PlayTableBarViewController? 

    var fatherVC: PlayTableBarViewController { 
     if _fatherVC == nil { 
      _fatherVC = self.storyboard?.instantiateViewController(withIdentifier: "playViewController") as? PlayTableBarViewController 
     } 
     return _fatherVC! 
    } 

    @IBAction func backToGame(_ sender: UIButton) { 
     fatherVC.nextView() 
    } 

} 

Antwort

1

Verwenden selectedIndex Eigenschaft UITabBarController (bis Sie Weitere Abschnitt in Ihrer UITabBar haben wollen

Von:. https://developer.apple.com/documentation/uikit/uitabbarcontroller/1621171-selectedindex

Das Festlegen dieser Eigenschaft ändert die ausgewählte Ansicht Controller zu dem einen am angegebenen Index in der v iViewControllers-Array. Um die Weitere Navigationscontroller selbst auszuwählen, müssen Sie stattdessen den Wert der Eigenschaft selectedViewController ändern.

class PlayTableBarViewController: UITabBarController { 
    func nextView() { 
     self.selectedIndex = self.selectedIndex + 1 
    } 
} 
+0

Danke, es funktioniert! – Lioru95

0

fand ich den Fehler, wo ich _fatherVC initialisieren. Dies:

_self.storyboard?.instantiateViewController(withIdentifier: "playViewController") 
    as? PlayTableBarViewController_ 

sollte sein:

_fatherVC = self.tabBarController as? PlayTableBarViewController 

Jetzt perfekt es funktioniert.

Verwandte Themen