Petit pb d'interface
muqaddar
Administrateur
Salut,
Je charge un tableau à partir d'un fichier plist avec des checkboxes, mais j'ai un petit pb d'interface, voir l'image jointe.
De plus, lorsque j'essaie de cocher/décocher les cases, rien ne change... c'est figé.
Mes checkBoxes sont des bool ds le code des dico.
[Fichier joint supprimé par l'administrateur]
Je charge un tableau à partir d'un fichier plist avec des checkboxes, mais j'ai un petit pb d'interface, voir l'image jointe.
De plus, lorsque j'essaie de cocher/décocher les cases, rien ne change... c'est figé.
Mes checkBoxes sont des bool ds le code des dico.
[Fichier joint supprimé par l'administrateur]
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Et la première ligne est quand même moins haute que les autres. zarbi.
il faut implémenter tableview:setobject:fortablecolumn.... dans le datasource...
et on ne peut effectivement pas les centrer, sauf à réduire la largeur de la colonne pour qu'elles aient l'air centrées...
J'ai réduit la colonne et enlevé l'intitulé. C'est propre.
Merci !
mais j'ai lu qu'on pouvait le faire en code (j'ai pas testé)
On peut centrer les checkboxs, mais il faut les initialiser par programmation au lieu de le faire dans IB.
Tu vires les cells dans IB, et tu rajoutes le code suivant dans awakeFromNib :
[tt] NSButtonCell *switchButtonCell=[[NSButtonCell alloc] init];
[switchButtonCell setButtonType:NSSwitchButton];
[switchButtonCell setImagePosition:NSImageOnly];
[switchButtonCell setTitle:@""];
[[maTableView tableColumnWithIdentifier:@identifier] setDataCell:switchButtonCell];
[switchButtonCell release];
[/tt]
j'ai le même problème sauf que la case ne se coche pas et je n'arrive pas à le faire.
L'orsque l'on click elle ce grise par la sélection et revient en état non sélectioné. Comment mettre la valeur à "true"? Par contre la valeur corespondante de la PLIST n'est pas en boolean. Que doit-je faire?
Il me semble que normalement, elle devrait passer en Bool par défaut dans le plist. Sinon, tu peux p-e essayer un setBool à la place de setObject quand tu enregitres tes dictionnaires.
et après je met :
je vai commencer par mettre ma PLIST en phase avec ma tableview en mettant le collone en boolean.
c'est mieux de mettre
if([object boolValue]){
[...]
}else{ [...]}
Ca revient exactement au même et perso, je trouve ca plus lisible :P
merci je connait l'astuce mais je préfère mettre "== YES" pour être sûr, un reste de REALbasic :P
comment faire pour modiffier mon dictionnaire?
<edit>
par défaut la valeurs dans la plist sont à true et les checkbox ne sont pas cochées lors du reload des données
</edit>
cette fonction permet de savoir quand une checkbox à la souris enfoncé :-\\
je code mal, je sais mais je débute et j'ai encore la lourdeur de REALbasic.
<edit>
je n'est pas de méthode "datasource"
le PLIST:
</edit>
PS:désolé, j'ai editer plusieur fois mon précedent message.
Oui, mais ce n'est pas dans une DataSource que ça se traite. Ta DataSource est là pour remplir ta tableview selon ton modèle de données, et à la vue de ton code c'est la première chose à restructurer correctement si tu veux que le reste suive
je veux bien mais comment??
PS: je suis débutant et autodidact sans bouquin.
et ensuite, tu rigoleras de tout ça.
N'hésite pas à poser des questions si tu piges pas un truc.
Mais cela ne ma pas résolu mon problème avec cette fichier checkbox. elle ne s'active toujour pas.
J'ai ça, comme dans le tuto.
Montre aussi le code où tu remplis myArray (que ce code).
Elle reste grisée ou quand tu clique dessus, ce ne fait rien ?
Autre remarque : la gestion mémoire.
Dans le code de - (void)connectionDidFinishLoading:(NSURLConnection *)connection tu fais myArray = NSArray arrayWithContentsOfURL:[NSURL URLWithString:@"http://www.monsite.com" retain]; Deux choses
1° si tu utilises des méthodes d'initialisations de classe (du genre +array... ou +stringWith...) tu n'as pas besoin de faire un retain. En effet, ces valeurs sont autoreleasé. Ensuite, tu ne fais justement pas de release sur la valeur. C'est un coup à te créer une fuite de mémoire.
2° myArray est, si je ne me trompe, une variable d'instance. Donc, au lieu de faire un "appel autoreleasé", le mieux est de faire un alloc-init. Donc, pour myArray = NSArray arrayWithContentsOfURL:[NSURL URLWithString:@"http://www.monsite.com" retain];, tu peux remplacer par :
Comme ca, ca t'évite une fuite de mémoire ou bien encore que ta variable soit autoreleasé au plein milieu de ton prog, alors que tu en as encore besoin
Voila, je sais pas si ces remarque te seront utiles, mais c'est toujours un bon truc à signaler :fouf):
Je n'enregistre pas les modifications ell sont réalisé de façon automatique à chaque fois.
On peut cliquer sur les checkbox. lorsque tu le fait, elle devient foncé puis redevient comme avant.
<edit>
j'ai un soussi, les checkbox n'apparaissent plus . voici le code :
</edit> :crackboom:-
j'avais un problème d'interface. En fait j'avais 2langue dans mon projet et je ne modiffiait que l'anglais allor que c'est le français qui s'affichait.
Je n'est pas envore réussi à changer la valeur de la checkbox mais ça ne va pas trader.
pour désactiver tout va bien mais pour activer il plante :
1. [tt]NSDictionary *dico2 = [NSDictionary alloc];[/tt] : cette ligne est inutile, et pire, elle provoque un memory-leak. Supprime là !
2. [tt]if([object boolValue] == NO)[/tt] : je suppose que object est ta checkbox... Dans ce cas, ce n'est pas la "value" que tu dois récupérer, mais le "state". En plus, le "state" n'est pas un BOOL mais un int. Remplace par : [tt]if([object state] == NSOffState)[/tt].
3. [tt][dico2 setValue:NO forKey:@recommander];[/tt] : setValue attend un objet, or tu lui envoies un BOOL, autrement dit, ça plante ! Remplace par [tt][dico2 setValue:[NSNumber numberWithBool:NO] forKey:@recommander];[/tt].
4. idem pour [tt][dico2 setValue:YES forKey:@recommander];[/tt].
5. [tt][myTableView reloadData];[/tt] : évite reloadData dans les méthodes du dataSource.
.