> ## Content Index
> Fetch the complete content index at: https://mindsers.blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# Swift adventures : Quand je décide de commencer une nouvelle application
- URL: https://mindsers.blog/fr/post/swift-adventures-decide-commencer-nouvelle-application/
- Published: 2014-07-03T15:33:48.000Z
- Updated: 2021-08-25T09:12:12.000Z
- Author: Nathanaël Cherrier
- Tags: ios, coding-tech, recettes reunion, storyboard, swift, #lang-fr

Comme vous le savez, j’ai décidé de me mettre à [Swift](https://mindsers.blog/fr/post/je-debute-mon-apprentissage-de-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](https://itunes.apple.com/us/book/swift-programming-language/id881256329?mt=11&ref=mindsers.blog) sur iTunes & traduis en [français](http://www.swiftcode.fr/?ref=mindsers.blog) 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](https://mindsers.blog/fr/post/ios-creation-dinterface-par-le-code-et-detection-de-la-taille-decran/). 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 :

```swift
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.

```swift
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.

```swift
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

```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 :

- [Swift adventures : les opérateurs « ! » et « ? »](https://mindsers.blog/fr/post/swift-adventuve-les-operateurs-optionnels/)
- [Swift adventures : Détecter la taille de l’écran (iPhone 4s ou 5) en Swift](https://mindsers.blog/fr/post/detecter-taille-ecran-en-swift/)
- [Swift adventures : Je débute mon apprentissage de Swift](https://mindsers.blog/fr/post/je-debute-mon-apprentissage-de-swift/)