Formatter qui rend fous...
chaps31
Membre
Là je sens qu'il faut que j'arrête de coder aujourd'hui sinon je vais devenir fou... :crackboom:-
J'utilise pour différents NSTextField des Formatter. Un pour les noms propres, un pour tout en majuscule... Je les crée dans XCode puis les instancie dans IB puis lie mes textfield au formatter adequat. Tout marche impeccable ça formate, ça formate.
Mais j'ai aussi des NSTextField qui contiennent des nombres (valeurs monétaires pour certains, pourcentages pour d'autres). Génial IB a déjà des NSNumberFormatter tout prêt, je les glisse-dépose directement sur mes NSTextField, hop une petite icone de formatter s'y attache, je clique dessus hop je peux régler ses attributs, y'a pas à dire c'est beau ergonomique, simple... :adios!:
Sauf que... Ces derniers NSNumberFormatter ne sont pas pris en compte !!! :crackboom:- Lorsque je lance mon appli, que dalle pas de formatage des NSTextField... Au secours, que se passe-t'il ? Pire je ne trouve nulle part une explication simple de leur fonctionnement... pour implémenter des Formatter dans XCode pas de problème mais sous IB, rien niet nada, doc apple, mon bouquin, Google... Arrgh... Heureusement il y a Objective-cocoa... Vous êtes mon seul espoir...
Merci
J'utilise pour différents NSTextField des Formatter. Un pour les noms propres, un pour tout en majuscule... Je les crée dans XCode puis les instancie dans IB puis lie mes textfield au formatter adequat. Tout marche impeccable ça formate, ça formate.
Mais j'ai aussi des NSTextField qui contiennent des nombres (valeurs monétaires pour certains, pourcentages pour d'autres). Génial IB a déjà des NSNumberFormatter tout prêt, je les glisse-dépose directement sur mes NSTextField, hop une petite icone de formatter s'y attache, je clique dessus hop je peux régler ses attributs, y'a pas à dire c'est beau ergonomique, simple... :adios!:
Sauf que... Ces derniers NSNumberFormatter ne sont pas pris en compte !!! :crackboom:- Lorsque je lance mon appli, que dalle pas de formatage des NSTextField... Au secours, que se passe-t'il ? Pire je ne trouve nulle part une explication simple de leur fonctionnement... pour implémenter des Formatter dans XCode pas de problème mais sous IB, rien niet nada, doc apple, mon bouquin, Google... Arrgh... Heureusement il y a Objective-cocoa... Vous êtes mon seul espoir...
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Essaie déjà de nettoyer la cible "Clean All targets", tu en as déjà tellement fait ..
La compilation sous XCode est (comme) un makefile, ce qui a déjà été compilé ne l'est pas de nouveau.
De temps en temps, des changements ne sont pas pris en compte comme on l'espèrerait . C'est peut-être ce qui t'arrive : un save pas fait dans IB, par exemple, ou je ne sais quoi.Â
• Créer un nib Cocoa vierge en dehors de ton projet
• Mets dedans un NXTextField et un NSNumberFormatter
• Choisis un réglage et fais Run dans IB, et Quit
Ajuste ainsi ton formatter à ce que tu veux
Nombre de décimales : [minimum fraction digit = 1 , maximum fraction digit = 2]Â
Nombre de chiffres avant la virgule : [minimum integer digit = 2 , maximum integer digit = 42] exemple : [2,42]Â Â
code :Â #00.0#
Padding sur Before Prefix
width=8 (nombre total de caractères) en complétant avec choix du caractère=^
code : *^###00.0#
Essai 45,236 s'écrit ^^^45,24
Pour essayer percent, il faut que % soit dans la chaà®ne inscrite par l'utilsateur
Bon je fais me faire taper dessus, le Jurançon se réchauffe... Mais c'est la galère, je progresse avec cette NSNumberFormatter. J'ai mis € after suffix et 8 maxi, sauf qu'il rempli les vides avec des €... C'est la misère, je sens que je vais coder le formatter... Mais pas ce soir.
48.80 €
-456.20 €
C'est fou mais pour un néophyte c'est vraiment pas facile à manier, mieux vaut laisser IB pour les formatter et recoder dans XCode... :-\\
nombre de décimales : [minimum fraction digit = 2 , maximum fraction digit = 2]
Nombre de chiffres avant la virgule : [minimum integer digit = 1Â Â
ajouter € directement dans le format
code :Â Â #0.00 €
Lorsque la fenêtre s'ouvre les NSTextfield sont remplis (via un setStringValue) j'ajoute un et hop ça marche.
Et pour les textfield avec % qui sont modifiable, hop la méthode delegate qui rajoute systématiquement % à la valeur du contenu récupéré via un intValue pour ne pas avoir plusieurs "%". :P
Une pirouette pour éviter ces maudit NSFormatter, merci Philippe49 pour ton aide.
Si cela s'emberlificote avec tes delegate method , tu peux aussi utiliser
float value=[textField floatValue];
NSString * formatedString=[NSString stringWithFormat:@%.2f €,value];
[textField setStringValue: formatedString];
// ....
Faut que je vire le delegate pour les autres textfield, je teste.
On met en route un certain nombre d'automatismes, et souvent il n'est pas facile de voir dans quel ordre ils s'exécutent, ni la portée de l'intervention de notre code.
ta table view est gérée en data source ?
-(void) awakeFromNib {
datasource=[[NSMutableArray alloc]initWithObjects:
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:1],@Col1,@11,@Col2,nil],
[NSDictionary dictionaryWithObjectsAndKeys:@2,@Col1,[NSNumber numberWithInt:22],@Col2,nil],
nil
];
}
ci-dessous, NSNumberFormatter sur les cellules de format #00000 et #000
Encore merci
Bon par contre dans le nsnumberformatter si dans la forme du nombre négatif je ne met pas le "-" il ne le met pas... Pourtant en bas dans la liste des réglages du formatter il est bien précisé (valeur par défaut) que pour les négatif le prefixe est "-"...
Bon j'ai rajouté "-" dans le format négatif et ça marche mais ça me perturbe que cela ne soit pas automatique lorsque dans les réglages du formatter le prefixe "-" est inscrit en prefixe négatif... Une explication ?
EDIT : pour mettre le négatif en rouge je passe par la présentation 10.0 du formatter qui à la case à cocher "Negative in Red", il y a un moyen de le préciser dans la présentation 10.4+ ?
Je ne vois pas dans IB
D'après la doc sur NSNumberFormatter, on peut coder dans un awakeFromNib du dataSource,
NSNumberFormatter *numberFormatter =Â //récupération dans les text field cells
NSMutableDictionary *newAttrs = [NSMutableDictionary dictionary];
[newAttrs setObject:[NSColor redColor] forKey:@NSColor];
[numberFormatter setTextAttributesForNegativeValues:newAttrs];
Sinon encore merci Philippe49 tu as mis le doigt pile sur mon problème, les données sont rapatriées d'une base PostgreSQL, et en fait elles arrivent toutes au final en NSString, d'où les comportements anarchiques de NSNUMBER, après modification du code pour que les numeric et autres integer restent des nombres les NSnumberFormatter, formattent... Merci encore
PS : Tu aimes le Jurançon ? Faut que je pense à t'en mailer une bouteille
YES !!