NSComboBox & formatter
muqaddar
Administrateur
Salut,
Je cherche à mettre un formatter dans ma NSComboBox qui doit afficher et prendre en compte les valeurs 3,4,5,6 et rien d'autre.
Je l'ajoute, je choisis le format 100 / -100 et donne une valeur minimale et maximale (3 et 6).
Mais quand je veux afficher l'UI, il n'affiche plus que la première valeur (3) et il met du blanc à la palce des autres ?
Que faut-il modifier au formatter ?
Je cherche à mettre un formatter dans ma NSComboBox qui doit afficher et prendre en compte les valeurs 3,4,5,6 et rien d'autre.
Je l'ajoute, je choisis le format 100 / -100 et donne une valeur minimale et maximale (3 et 6).
Mais quand je veux afficher l'UI, il n'affiche plus que la première valeur (3) et il met du blanc à la palce des autres ?
Que faut-il modifier au formatter ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Positive : 0
Zero : 0
Negative : 0
Min : 3
Max : 6
Ca devrait marcher
PS: Fait attention avec la boucle for, je me goure tout le temps avec le sens des inegalites et aussi pour savoir si il faut les mettre strictes ou pas.
Les boucles c'est pas mon for
oui, ça marcherait, mais le pb, c'est le formatter , c juste pour enpécher des gens d'écrire n'importe quoi, si je le mets pas, il m'affiche bien mes valeurs par défaut.
oui, ça marcherait, mais le pb, c'est le formatter , c juste pour enpécher des gens d'écrire n'importe quoi, si je le mets pas, il m'affiche bien mes valeurs par défaut.
Bon, c'est pas grave tu as tout ce qu'il faut sous la main pour surveiller toi-même le textfield du combobox. Le mieux est de supprimer le formatter de ton combobox.:)
Tu passes par une notification pour détecter tout changement dans le textfield (avec un outlet sur ta comboBox), et ensuite tu testes ta valeur.
Le code ci-dessous n'est pas testé donc il se peut qu'il ne soit pas entièrement juste, et qu'il ne prenne pas tout les cas de figure en compte (donc incomplet)....
Dans awakeFromNib:, tu mets ta notification (par contre ne pas oublier le removeObserver dans dealloc:) :
[tt]
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(comboBoxTextFieldModif name:NSControlTextDidChangeNotification object:comboBox];
[/tt]
Puis tu met ta méthode de test dans le controleur adéquat :
[tt]
-(void)comboBoxTextFieldModif:(NSNotification *)notification
{
// Si on est dans l'intervalle alors c'est Ok
if ([comboBox intValue]>2 && [comboBox intValue]<7)
{
return;
}
// Si on est supérieur on règle au maxi
if ([comboBox intValue]>6)
{
[comboBox setIntValue:6];
return;
}
// Si une valeur inférieure ou autre chose a été rentré (chaine quelconque) on règle au mini
[comboBox setIntValue:3];
}
[/tt]
Bonne idée la notification.
J'ai une question qui n'a rien à voir par rapport à ton code. Je vois que tu mets des return; dans un void :
je savais pas qu'on pouvait (vu que les void ne retournent rien en général).
Les return interrompent la methode. Ca evite de faire des if...then...else gigantesque. Donc dans une methode qui retourne void, il suffit juste d'ecrire return; pour que le fonction s'arrete et eviter des testes inutiles. C'est plus facile, plus propre et surement plus performant.
J'espere que j'ai repondu a ta question.
Mais je connaissais exit; en php, c'est pareil apparemment.