Je suis un débutant complet à Objective-C, venant d'un arrière-plan de PHP, des dialectes assortis de BASIC, et une poignée de C/C++. Bien que je sois assez clair sur la configuration des fenêtres de base dans Interface Builder, j'ai du mal à manipuler le contenu des champs de texte, en particulier en appelant des valeurs et en leur envoyant des valeurs. J'utilise un modèle d'application de base Xcode Cocoa sans extras et j'ai créé une classe Cocoa appelée "controller.h". Dans Interface Builder, j'ai mis en place une fenêtre avec un champ de texte sécurisé, un objet NSTextField de base et un bouton poussoir pour soumettre le formulaire. Ma classe de contrôleur est comme ceci:Affectation de valeurs variables à NSTextFields dans Objective-C
//controller.h
#import <Cocoa/Cocoa.h>
@interface controller {
IBOutlet id userInput;
IBOutlet id userOutput;
}
- (IBAction)submitButton:(id)sender;
@end
//controller.m
#import "controller.h"
@implementation controller
- (IBAction)submitButton:(id)sender {
NSBeep();
[userOutput setStringValue: userInput];
[userInput setStringValue:nil];
}
@end
Je UserInput liée à la zone de texte sécurisé et userOutput lié à la NSTextField. submitButton est lié au bouton-poussoir. Selon ma compréhension de la façon dont les choses fonctionnent, cela devrait affecter la valeur du texte sécurisé dans userInput à userOutput, mettant ainsi à jour ce qui est affiché dans NSTextField, puis réinitialiser le champ. Le bip est là pour me faire savoir si la fonction est appelée.
Le bip ne s'éteint pas, ce qui signifie que rien ne se passe. Interface Builder a construit les fichiers, donc je sais qu'ils ont été définis correctement et sont connectés aux bons endroits. Comment puis-je le corriger pour que IBAction s'exécute et que les valeurs soient envoyées là où elles doivent être?
Nous vous remercions de votre aide concernant la question du champ de texte et de l'utilisation des ruptures! Avez-vous une idée de la raison pour laquelle l'IBAction ne fonctionne pas, par hasard? – Kaji
Pas de problème. J'ai mis à jour ma réponse avec une autre idée. Les problèmes liés à l'IB sont assez difficiles à déboguer sans être réellement devant l'écran, mais j'espère que cela aidera. –
D'accord, j'ai traversé et bricolé comment j'ai défini et connecté les prises et les actions dans la définition de la classe, et tout semble fonctionner maintenant! awakeFromNib activé, et ainsi j'ai enlevé cette ligne et ai placé la fonction de bouton à [userOutput setStringValue: [userInput stringValue]]; et il fait exactement ce qu'il est censé faire maintenant. Merci beaucoup! – Kaji