Notre ViewController n’existe que dans le Storyboard pour le moment, à l’instar de ce que nous avions fait pour le TableViewController nous allons créer un fichier Swift pour connecter notre XML avec notre code
Le storyboard n’est qu’un fichier XML de description des vues, comme l’HTML l’est pour les pages web. UIKit est en réalité un framework permettant de rendre dynamique le storyboard, comme VueJS pour une page web.
Swift nommé DocumentViewController qui va hériter de UIViewController.ViewController du storyboard à notre code (Comme pour le TableViewController), depuis l’inspecteur d’attribut.Contrairement à notre TableViewController qui est lié automatiquement au TableView du Storyboard lors de la liaison par le nom du fichier Swift, ici nous devons lier manuellement notre ImageView à notre code. Le binding n’est pas automatique.
Ouvrez l’assistant d’interface pour lier votre ImageView à votre code.
Pour cela, sélectionnez le composant dans le storyboard, puis cliquez sur le bouton Assistant Editor en haut à droite de Xcode.

Vous devriez voir votre code et votre storyboard côte à côte.
Vous pouvez ensuite faire un Ctrl + Drag (et pas Cmd) depuis votre composant vers votre code pour le lier. (Oui oui, je vous ai fait un petit gif pour vous montrer)

Tout fonctionne bien si lorsque vous cliquez sur un élément de la liste, cela ouvre la vue de détail avec l’image d’exemple choisie précédemment.
Sauf que pour le moment l’écran détail ne reçoit aucune donnée spécifique à la ligne choisie.
Automatiquement, grâce au Segue, nous ouvrons l’écran de détail. Mais le souci c’est que nous n’avons pas accès aux données de la ligne sélectionnée.
Pour cela il va falloir utiliser cette fonction, qui intercepte le Segue pour fournir plus d’informations de contexte.
// Dans DocumentTableViewController
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// 1. Récuperer l'index de la ligne sélectionnée
// 2. Récuperer le document correspondant à l'index
// 3. Cibler l'instance de DocumentViewController via le segue.destination
// 4. Caster le segue.destination en DocumentViewController
// 5. Remplir la variable imageName de l'instance de DocumentViewController avec le nom de l'image du document
}
DocumentViewController pour stocker le nom de l’image à afficher.Segue pour envoyer les données de la ligne sélectionnée à l’écran de détail, utilisez le code ci-dessus, avec les commentaires pour vous aider.UIImage(named: imageName) sur l’ImageView.Ça devrait ressembler à ça :
// Dans DocumentViewController
// Outlet que nous avons configuré en 6.
@IBOutlet weak var imageView: UIImageView!
var imageName: String?
override func viewDidLoad() {
super.viewDidLoad()
// 1. Vérifier que imageName n'est pas nil
// 2. Afficher l'image dans l'ImageView
}
Si vous êtes arrivés jusque là, vous avez réussi à créer une application avec une liste de documents et un écran de détail. Ce qui est déjà pas mal pour une première application, en réalité vous avez utilisé la plupart des composants de base d’une application iOS.
Pour la suite, nous allons voir comment ajouter des fichiers à notre application, et comment les afficher dans notre liste. Mais vous serez moins guidés, car normalement vous êtes bien niveau connaissances.