Swift adventures : Quand je décide de commencer une nouvelle application

Comme vous le savez, j’ai décidé de me mettre à Swift, le nouveau langage de programmation de Cupertino. J’ai commencé à lire l’e-book fournis par les développeurs d’Apple (dispo en anglais sur iTunes & traduis en français par des fans sur le web), j’ai même fait les exercices demandés grâce au playground de Xcode 6 et j’ai eu une idée : pour m’entrainer, je vais développer ma prochaine application en « Swift ».

Alors je vous annonce tout de suite la couleur. Ce sera une application de cuisine : elles sont en vogue en ce moment. Je me suis dit qu’étant réunionnais je pourrais peut-être développer une application de recettes de cuisine réunionnaise. L’application sera très simple. Je compte juste, pour commencer, afficher les recettes en photo dans un UICollectionViewController et une vue détaillée qui tire son contenu d’une API simple que je viens de développer.

Comme vous le savez, ma lubie en ce moment est de ne pas utiliser de Storyboard. La partie du projet que je vais donc vous expliquer est une des plus essentielles.

Une application « Swift » basée sur UITabBarController, UINavigationController et UICollectionViewController

Bon on va faire ça par étape, parce que ça va être lourd. Tout d’abord, créons le UICollectionViewController. Dans la fonction func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?)-> Bool du AppDelegate.swift, écrivez ceci :

var collLayout = UICollectionViewFlowLayout()
collLayout.itemSize = CGSize(width: 20, height: 20)
collLayout.scrollDirection = UICollectionViewScrollDirection.Vertical

var collView = UICollectionViewController(collectionViewLayout: collLayout)

Ce code se divise en deux parties : une où l’on crée et paramètre un layout et l’autre où l’on crée le CollectionView à partir de ce layout.

var homeNav = UINavigationController()
homeNav.setViewControllers([collView], animated: true)
homeNav.navigationBar.barTintColor = UIColor.redColor()

var tabBarC = UITabBarController()
tabBarC.setViewControllers([homeNav], animated: true)

Ici je crée un NavigationController que je paramètre et auquel je demande de charger ma CollectionView. Ensuite je crée une TabBarController qui se charge d’afficher le controleur de navigation codé plus haut.

self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window!.rootViewController = tabBarC

Et enfin on affiche tout ce petit monde à l’écran ! Tout ça pour voir apparaitre une barre de navigation rouge sans titre, une tabBar qui n’affiche pas encore ses items et en prime nous avons un vilain fond noir. Je pense qu’a ce moment, si vous êtes normalement constitué, vous vous dites : « Vive le Storyboard ! ». Mais je vous assure que j’ai de bonnes raisons de croire le contraire.

Bonus : modification des items d’un UITabBarController en Swift

var itemColl: UITabBarItem = self.tabBarC!.tabBar.items[0] as UITabBarItem

itemColl.title = "title"
itemColl.image = UIImage(named: "icon")

La seule vraie difficulté ici est qu’il faut penser à bien récupérer l’item dans la tabBar parce qu’il existe déjà et préciser que l’on veut utiliser l’élément du tableau comme un UITabBarItem.

Voilà ! Vous savez maintenant comment personnaliser votre UITabBarController.

Pour aller plus loin :