IPB

Bienvenue invité ( Connexion | Inscription )

> Problème avec les NSCell
Options
Number One
posté 9 Sep 2002, 08:00
Message #1


Nouveau Membre


Groupe : Membres
Messages : 27
Inscrit : 15 Sep 2001
Lieu : Lausanne, Suisse
Membre no 805



Hello !!!

J'ai un petit problème avec les NSCell smile.gif

En fait j'ai une NSView qui affiche le contenu d'un jeu et j'aimerais afficher des NSButton (comme dans interface builder) dans cette view.

Dans le fichier de la view, j'ai implémenté la NSCell de cette façon (je sais pas si c'est la bonne manière, mais ça marche, mon bouton s'affiche où je veut dans ma view):

CODE
- (void)drawMainMenuIn:(NSRect)r

{

   NSButton *startGameButton = [[NSButton alloc] initWithFrame:r];



   NSButtonCell *buttonCell = [[NSButtonCell alloc] init];

   

   displayCell.size.width = 200;

   displayCell.size.height = 50;

   displayCell.origin.x = r.size.width / 2 - 100;

   displayCell.origin.y = 230;

   

   [buttonCell setAction:@selector(startGame)];

   [buttonCell setTarget:self];

   

   [startGameButton setCell:buttonCell];

   

   [startGameButton setTitle:@"Nouvelle partie"];

   

   [buttonCell drawWithFrame:displayCell inView:self];



   [startGameButton release];

   [buttonCell release];

}


Mais maintenant comment je fais pour savoir si ce bouton est clické (et exécuter une action?), Programming for Mac OS X et Learning Cocoa sont tout sauf clair sur le sujet… je bloque là dessus depuis un moment, si vous avez une idée smile.gif

Mon message n'est sans doute pas clair, n'hésitez pas a demander plus d'infos wink.gif

J'espère que quelqu'un pourra m'aider…

@+ Number One
Go to the top of the page
 
+Quote Post
 
Start new topic
Réponse(s)
nucleus
posté 10 Sep 2002, 00:09
Message #2


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 351
Inscrit : 17 May 2001
Lieu : Paris
Membre no 256



QUOTE
Désolé pour ces questions de débutant, mais c'est ma première "vraie" application et j'ai de la peine a comprendre les NSCell… même si je comprends les NSView…


NSButton est une spécialisation de la classe NSView, or chaque instance de type NSView est assez lourde à créer car en gros une NSVew est matérialisée par une fenêtre (sans bords) pour le gestionnaire de fenêtres..

S'il n'y a pas beaucoup de NSButton ce n'est pas un problème, mais si par exemple tu veux faire une calculatrice avancée tu va te rendre compte que c'est vraiment pas une bonne idée d'utiliser NSButton pour faire chaque bouton: ca va ramer.

Mais pour ne pas perdre l'interet d'une classe qui sait gérer et afficher un bouton, et pour pouvoir réutiliser le code sans copier-coller (la pire des réutilisations en objet), tu as NSButtonView qui encapsule la logique spécifique à un bouton mais qui ne crée pas de fenêtre.

Ainsi pour ta calculatrice tu n'as besoin de créer qu'une seule vue (par exemple NSMatrix) qui contient plusieurs de NSButtonCell

La classe NSButton est donc une fenêtre avec un NSButtonCell. Le NSButton s'occupe de gérer l'espace sur l'écran, le NSButtonCell s'occupe du reste

Si tu regarde dans la doc, tu verra beaucoup de couple View/Cell qui fonctionnent selon le même principe..

Certaines NSView sont conçues pour regrouper plusieurs cells et permettre un affichage et une interaction complexe dans une seule NSView, comme la NSTableView
Go to the top of the page
 
+Quote Post

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 18th July 2025 - 09:48