Comment créer par programmation des onglets à partir de toute classe étendue par UIViewController:
class DashboardTabBarController: UITabBarController {
override func viewDidLoad() {
//here
}
...
}
MISE À JOUR Swift 3
Voici un exemple de la façon de créer une UITabBarController
par programme:
Tout d'abord, nous créons la UIViewControllers
qui sera le contenu de chaque onglet de l'interface de la barre d'onglets. Pour cet exemple, nous n'en créons qu'un très simple.
class Item1ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.green
self.title = "item1"
print("item 1 loaded")
}
}
Maintenant, la UITabBarController
:
Nous créons les nouvelles instances de la UIViewControllers
que nous voulons afficher dans la barre d'onglets. Ensuite, nous créons une icône pour chaque instance créée, puis un tableau contenant toutes les variables UIViewControllers
spécifiant le contenu de chaque onglet de l'interface de la barre d'onglets. L'ordre des contrôleurs de vue dans le tableau correspond à l'ordre d'affichage dans la barre d'onglets .
class DashboardTabBarController: UITabBarController, UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
delegate = self
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let item1 = Item1ViewController()
let icon1 = UITabBarItem(title: "Title", image: UIImage(named: "someImage.png"), selectedImage: UIImage(named: "otherImage.png"))
item1.tabBarItem = icon1
let controllers = [item1] //array of the root view controllers displayed by the tab bar interface
self.viewControllers = controllers
}
//Delegate methods
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
print("Should select viewController: \(viewController.title) ?")
return true;
}
}
Si vous utilisez le storyboard pour les contrôleurs de vue, vous devez écrire comme ceci dans votre classe tabbarcontroller.
class CustomTabbarController : UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let firstViewController = FirstViewController()
let navigationController = UINavigationController(rootViewController: firstViewController)
navigationController.title = "First"
navigationController.tabBarItem.image = UIImage.init(named: "map-icon-1")
viewControllers = [navigationController]
if let secondViewController = storyboard.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController {
let navgitaionController1 = UINavigationController(rootViewController: secondViewController)
navgitaionController1.title = "Second"
navgitaionController1.tabBarItem.image = UIImage.init(named: "second-icon-1")
var array = self.viewControllers
array?.append(navgitaionController1)
self.viewControllers = array
}
}
}