Récupérer la valeur d'un NSTextxField

enkaenka Membre
avril 2014 modifié dans API AppKit #1

Bonjour,


 


Je me remet à  la programmation et j'ai donc commencé par un petit programme. Le but (pour le moment) est de récupérer la valeur d'un NSTextField et d'afficher cette valeur dans un autre.


 


J'ai donc une fenêtre avec ces deux champs de texte, un bouton pour récupérer la valeur du premier et la passer au second, un bouton pour réinitialiser les deux champs de texte.


 


J'arrive à  passer une valeur dans les deux champs de texte, mais pas à  récupérer la valeur d'un champ de texte. Je pense que j'ai du zappeur quelque chose de très logique, mais bon...


J'ai spécifier dans mon fichier .nib Sent on end editing plutôt que on enter only pour l'envoi de l'action.


 


Voici mon fichier header :



#import <Cocoa/Cocoa.h>

@interface testAppDelegate : NSObject <NSApplicationDelegate>

@property (assign) IBOutlet NSWindow *window;

- (IBAction)textAConvertir:(NSTextField *)sender; // Champ texte 1, valeur à  récupérer
- (IBAction)crypterBouton:(id)sender; // Bouton pour copier texte d'un champ à  l'autre
- (IBAction)reinitBouton:(id)sender; // Bouton pour réinitialiser les champs

@property (weak) IBOutlet NSTextField *textConverti; // Champ texte 2, pour réinitialiser

@property (weak) IBOutlet NSTextField *textAConvertir; // Champ texte 1, pour réinitialiser


@end
 

Et mon fichier .m :



#import "testAppDelegate.h"

@implementation testAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application

}
NSString * text2Convert;



- (IBAction)textAConvertir:(NSTextField *)sender { // récupérer valeur du champ texte 1
text2Convert = [sender stringValue];

}

- (IBAction)crypterBouton:(id)sender { // envoyer valeur dans champ texte 2

[_textConverti setStringValue:text2Convert];
}

- (IBAction)reinitBouton:(id)sender { // réinitialise les champs texte
[_textConverti setStringValue:@reinit];
[_textAConvertir setStringValue:@reinit];
text2Convert = @reinit;

}
@end

Merci de votre aide !


Réponses

  • CéroceCéroce Membre, Modérateur

    Je ne saisis pas ton problème, puisque tu récupères déjà  la valeur des champs avec -stringValue dans ton exemple. Tu disposes aussi de méthodes -floatValue et cie.


  • enkaenka Membre

    En fait j'ai mal précisé mon soucis, désolé...


    stringValue ne reçoit rien, là  est mon problème  ???


  • CéroceCéroce Membre, Modérateur

    Regarde si la variable d'instance correspondant au textfield n'est pas nulle. Mais bon, ça devrait fonctionner.


  • enkaenka Membre

    Bon, j'ai trouvé !


     


    En fait il faut que je récupère la valeur du NSTextField dans le IBAction de mon bouton et non dans celui du NSTextField (je pensais qu'il récupérait la valeur dès qu'une touche était appuyée...)


     


    Donc



    - (IBAction)crypterBouton:(id)sender { // envoyer valeur dans champ texte 2
    text2Convert = [_textAConvertir stringValue];
    [_textConverti setStringValue:text2Convert];
  • Bonjour anka,


     


    Si tu déclares deux propriétés,


    @property NSString *textAConvertir;


    @property NSString *textConverti;


    et que tu les attribues par "binding" à  tes deux NSTextField, tu peux te contenter de faire:



    - (IBAction)crypterBouton:(id)sender // envoyer valeur dans champ texte 2
    {
    self.textConverti = self.textAConvertir;
    }

    A la rigueur, tu peux même te passer du bouton "Convertir", puisque selon le réglage du NSTextField, le texte converti s'affiche quand tu quittes le champ (avec tab ou return) ou même caractère par caractère.


Connectez-vous ou Inscrivez-vous pour répondre.