[macOS] Communication entre barre de menus et vue

Dark Templar

Ex-vénérable sage
Club iGen
24 Avril 2002
16 898
1 044
Toujours là
www.pontida.fr
Bonjour,

J'ai décidé de me lancer dans le développement d'une application qui me permette de reproduire une fonctionnalité d'iPhoto manquante de Photos. C'est aussi l'opportunité pour moi de découvrir le développement sur Mac et d'apprendre le Swift. Le language me plait plutôt, par contre j'ai du mal avec InterfaceBuilder.

La hiérarchie de mon application est très basique pour l'instant : j'ai une application avec un AppDelegate, une fenêtre avec un Window Controller, et un View Controller principal pour ma vue principale.

Je veux pouvoir parcourir un dossier, avec la commande d'ouverture de la barre de menus. Mon problème c'est que cette action est interceptée par mon AppDelegate (qui doit être le first responder pour la barre des menus) et que je ne sais pas comment ensuite passer le chemin de ce dossier à mon modèle de données qui est référencé par le ViewController. En gros, je ne sais pas comment communiquer élégamment entre mon AppDelegate et mon ViewController.
Ce que je fais pour l'instant c'est que j'ai rajouté une référence à mon ViewController dans AppDelegate (@IBOutlet), que j'instancie au moment de l'initialisation de mon ViewController. Ça fonctionne mais je pense qu'il y a mieux à faire… avec un système d'abonnement ou de notification je suppose. Quelle serait une bonne méthode ?

Merci d'avance,
Dark :merci:
 
Bonjour,

J'ai décidé de me lancer dans le développement d'une application qui me permette de reproduire une fonctionnalité d'iPhoto manquante de Photos. C'est aussi l'opportunité pour moi de découvrir le développement sur Mac et d'apprendre le Swift. Le language me plait plutôt, par contre j'ai du mal avec InterfaceBuilder.

La hiérarchie de mon application est très basique pour l'instant : j'ai une application avec un AppDelegate, une fenêtre avec un Window Controller, et un View Controller principal pour ma vue principale.

Je veux pouvoir parcourir un dossier, avec la commande d'ouverture de la barre de menus. Mon problème c'est que cette action est interceptée par mon AppDelegate (qui doit être le first responder pour la barre des menus) et que je ne sais pas comment ensuite passer le chemin de ce dossier à mon modèle de données qui est référencé par le ViewController. En gros, je ne sais pas comment communiquer élégamment entre mon AppDelegate et mon ViewController.
Ce que je fais pour l'instant c'est que j'ai rajouté une référence à mon ViewController dans AppDelegate (@IBOutlet), que j'instancie au moment de l'initialisation de mon ViewController. Ça fonctionne mais je pense qu'il y a mieux à faire… avec un système d'abonnement ou de notification je suppose. Quelle serait une bonne méthode ?

Merci d'avance,
Dark :merci:

Salut,

Regarde du côté des observers par exemple avec cet article https://www.cocoawithlove.com/2008/06/five-approaches-to-listening-observing.html.

Tu vas créer ton propre observer dans ta vue de barre de menus qui va dispatcher à ta vue principale en passant en paramètre le chemin dont tu as besoin. C’est pas compliqué et c’est assez commun dans d’autres langages de programmation.