Erstellen Sie zunächst Unterklasse von UITabBarController
, dann Eigenschaften hinzufügen zu AppDelegate
var navController: UINavigationController?
var tabController: MyTabController?
Wenn Sie Tab-Leiste Controller auf App-Start angezeigt werden sollen dann diesen Code setzen in AppDelegate
in didFinishLaunchingWithOptions
self.window = UIWindow(frame: UIScreen.main.bounds)
let myStoryboard = UIStoryboard(name: "Main", bundle: nil) as UIStoryboard
self.tabController = myStoryboard.instantiateViewController(withIdentifier: "MyTabController") as? MyTabController
//self.navController = UINavigationController(rootViewController: self.tabController!)
//self.window?.rootViewController = self.navController
self.window?.rootViewController = self.tabController
self.window?.makeKeyAndVisible()
return true
Wenn Sie auf Tab-Leiste nach Anmeldung oder som springen ething sonst dann, fügen Sie Eigentum an diesen Controller
var appDelegate: AppDelegate!
in viewDidLoad
appDelegate = UIApplication.shared.delegate as? AppDelegate
Und soll Methode
func logIntoApp() {
appDelegate.tabController = self.storyboard?.instantiateViewController(withIdentifier: "MyTabController") as? MyTabController
appDelegate.window?.rootViewController = appDelegate.tabController
}
dann in Ihrem Registerkarte Artikel View-Controller möchte, erstellen Eigenschaft AppDelegate
und zuweisen Delegieren Sie wie oben.
und Methoden sollten wie:
@IBAction func showWithTab(_sender: AnyObject) {
let DefaultVC = self.storyboard?.instantiateViewController(withIdentifier: "DefaultViewController") as! DefaultViewController
self.navigationController?.pushViewController(DefaultVC, animated: true)
}
@IBAction func showWithoutTab(_sender: AnyObject) {
let DefaultVC = self.storyboard?.instantiateViewController(withIdentifier: "DefaultViewController") as! DefaultViewController
// You can create your own animation
UIView.transition(from: (appDelegate.tabController?.view)!, to: (appDelegate.navController?.view)!, duration: 0.3, options: UIViewAnimationOptions.curveEaseIn) { (finished) in
self.appDelegate.window?.rootViewController = self.appDelegate.navController
}
// OR you can use like this way
UIView.transition(from: self.view, to: DefaultVC.view, duration: 0.3, options: UIViewAnimationOptions.curveEaseIn) { (finished) in
self.appDelegate.window?.rootViewController = self.appDelegate.navController
}
}
Sie erwähnten Sie verwenden Swift 3.0 aber die Funktion, die Sie hinzugefügt haben, ist in Obj-c? –