ajouter une vue à ma fenêtre
protocomm
Membre
Bonjour à tous,
J'ai fait une appli (schedulMediation) mais je voudrais lorsque je clique sur un bouton ajouter une vue (custom view ???) par dessus ma fenêtre principale et donc faire apparaitre ma nouvelle vue tout en inhibant l'autre.
J'ai fait une recherche mais sans succès, j'ai essayé de créer une classe héritant de UIView mais il me sort une erreur UIKit/UIkit.h file not found j'ai bien essayé de la linker dans build phases mais le framework est introuvable.
dà®tes moi si je fais fausse route.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
"Par dessus", ne veut rien dire. Soit tu crées une autre UIWindow, soit tu changes les vues qu'elle contient.
Une NSWindow possède une contentView, qui en gros, fait sa taille moins la barre de titre.
Il est possible de:
- changer le contentView pour que ce soit une autre vue
- ajouter ou retirer des subviews à la contentView. En effet, les vues sont organisées de façon hiérarchique.
A priori, c'est cette dernière option que tu dois retenir (et utiliser des NSViewController pour gérer chaque hiérarchie de vues).
C'est normal, il n'y a pas de UIKit sur Mac OS X, mais un AppKit.
Ok je te remercie Céroce, je vois que je mélange un peu tout UIKit c'est pour l'iphone mais ce n'est pas évident de trouver les bonnes réponses même avec les bouquins...
Donc il faut que je change ma "contentView" mais je m'y prend comment, quelle est la classe concernée ??
excuse moi je pense que j'ai trouvé le lien qui trouvera réponse à mes interrogations.
Mais en gros, l'essentiel se fait avec les méthodes de NSView -addSubview: et -removeFromSuperview. La difficulté vient d'adapter les frames des vues, mais tu verras ;-)
Merci Céroce, mais je pensais m'orienter vers ce tutoriel.J'ai essayé, c'est beaucoup de liaisons dans IB mais pas trop de code.
Est ce aussi une bonne solution ?
Pour chaque hiérarchies de vues que tu veux échanger, crée une sous-classe de NSViewController et un XIB qui porte le même nom.
Ensuite, pour placer les vues contenues dans le xib, tu feras ça (probablement dans ta sous-classe de NSWindowController):
Tu n'as ensuite, besoin de tirer les outlets et actions qu'entre les objets du xib et le view controller (n'oublie pas de définir la classe de File's Owner à MyViewController1 dans le xib si ce n'est déjà fait).
Quand tu voudras échanger avec le VC2, tu enlèveras la view du VC1 (removeFromSuperview), et tu feras la même chose que ci-dessus.
ok je te remercie, j'ai vu que je faisais fausse route car lorsque mes vues ont été créées je n'ai pas trouvé le moyen de lier mes boutons de la custom view avec l'appli vu qu'elle se trouve dans le xib principal.
C'est un peu l'usine à gaz quand même quand on est pas habitué mais bon je m'accroche.
Excuse moi Céroce d'abuser de ton temps mais malgré mes efforts je suis complètement perdu, j'ai suivi le tut plus haut et cela fonctionne mais malheureusement il faut que je place les changements de vue en dehors de la Box, mois ce que je veux c'est une interface principale et lorsque je clique sur un bouton changer de vue....
J'ai essayé ta méthode mais je ne comprend pas la sous classe de NSWindowController, je n'arrive pas à comprendre par quel bout prendre tout ça...
Aurais tu un lien, j'ai bien lu la doc apple mais ça part tout azimuth, pas d'exemple précis...et sur le web il y en a que pour l'iphone.
J'ai fait mieux... j'ai fait un article de blog:
Une fenêtre qui change de view controller.
Ton article est très bien réalisé, j'ai déjà réussi à faire cela.
Lorsque je clique sur un bouton appartenant à mon xib1 je voudrais basculer vers xib2, alors que là les boutons appartiennent au MainXib.
Quand le bouton dans xib1 est actionné, alors le VC qui le gère doit dire à l'objet qui gère MainXib qu'il faut basculer vers xib2.
Utilise la design pattern Délégation pour cela.
@Céroce
J'aurais volontier regardé ce que tu as fait. Mais je suis développeur "Gratuit". Donc je n'ai pas possibilité de télécharger les pré-release. Donc pas de Xcode 5, pas d'OSX 10.9.
Sous Xcode 4.6.3 j'obtiens:
Please use a newer version of Xcode. Consider changing the document's Development Target to preserve compatibility.
Comme c'est une compatibilité d'exécution et non de développement, je suis coincé jusqu'à la sortie officielle de xcode 5 et OSx 10.9.
Xcode 5 sera dispo très prochainement.
Ceci dit, l'article donne vraiment toutes les infos.
euh, je fais ça comment avec le "design pattern Délégation" car j'ai fait des recherches sur google et je tombe sur decorator factory...du chinois quoi !!!
C'est bizarre car les NSLOG d'une vue à l'autre sont bien transmis donc lorsque je clique sur un bouton l'action associée est bien active mais si je veux remplir un NSTextField ça ne fonctionne plus ??
MERCI.
Par exemple cet article.
Apple a aussi un guide "Cocoa Design Patterns" qui l'explique.
Rien compris.
Merci Céroce pour tes réponses, il est vrai que je ne suis pas très clair mais dans ma tête non plus...c'est un peu le fouillis.