Petit pb d'interface

2»

Réponses

  • wiskywisky Membre
    août 2005 modifié #32
    Merci,

    1. La ligne que tu me demande de supprimer ne peut l'être il faut déclarer "dico2"

    2. [tt]if([object state] == NSOffState)[/tt] ne fonctionne pas il met une erreur lors de l'exécution ([tt]*** -[NSCFBoolean state]: selector not recognized [self = 0xa0728964][/tt]).

    pour le reste ça marche. Merci.
  • BruBru Membre
    18:30 modifié #33
    dans 1123159114:

    1. La ligne que tu me demande de supprimer ne peut l'être il faut déclarer "dico2"


    Exact, il ne faut garder que [tt]NSDictionary *dico2;[/tt];

    .
  • wiskywisky Membre
    août 2005 modifié #34
    c'est fait et ça marche. ;)

    comment faire pour forcer le refresh d'un NSTextField?
  • BruBru Membre
    18:30 modifié #35
    dans 1123159114:

    2. [tt]if([object state] == NSOffState)[/tt] ne fonctionne pas il met une erreur lors de l'exécution.


    J'ai squizzé le fait que tu étais dans la méthode dataSource de persistence des modif...

    Donc [tt][object boolValue][/tt] fonctionne !

    .
  • BruBru Membre
    18:30 modifié #36
    dans 1123159368:

    c'est fait et ça marche. ;)

    comment faire pour forcer le refresh d'un NSTextField?


    Tu n'as pas en théorie à  faire des raffraà®chissements de la NSTableView... C'est elle qui s'en charge toute seule comme une grande.

    reloadData ne sert que lorsque les données affichées dans la table ont été modifiées en dehors de la NSTableView (donc, elle ne sait pas qu'il y a des modifs à  ré-afficher, donc c'est à  toi de forcer le raffraichissment par reloadData).

    .
  • wiskywisky Membre
    août 2005 modifié #37
    j'ai un souci avec mon NSTextField qui permet de savoir où en est mon logiciel. Il ne se ré-affiche plus après le chargement de la PLIST à  traiter.

    La PLIST est récupéré sur internet après un test de la connexion.
  • BruBru Membre
    18:30 modifié #38
    dans 1123160817:

    j'ai un souci avec mon NSTextField qui permet de savoir où en est mon logiciel. Il ne se ré-affiche plus après le chargement de la PLIST à  traiter.
    La PLIST est récupéré sur internet après un test de la connexion.


    Difficile de deviner ce que tu veux faire avec si peu d'indice...

    Sinon, si le contenu du plist que tu viens de récupérer sur internet modifie le contenu de la NSTableView, alors tu dois effectivement faire un [tt][tableview reloadData];[/tt] juste après le chargement réussi du plist.

    .
  • wiskywisky Membre
    18:30 modifié #39
    tout au long de l'exécution du code de chargement de la PLIST, il y a des ligne de ce [tt][etats setStringValue:NSLocalizedStringFromTable(@NMAJ, @Localizable, @A comment)];[/tt] qui change le texte contenu dans etats qui est un NSTextField.
    Le problème est, après le chargement de la PLIST qui vient d'internet, les changement de contenu ne se font plus (de plus un progressBar est présent, lui aussi se bloque).
  • Eddy58Eddy58 Membre
    18:30 modifié #40
    Le code que tu as mis plus haut n'est plus à  jour je pense, met le code de la partie incriminée macintosh_plus. :)
  • wiskywisky Membre
    18:30 modifié #41
    /* Méthode si connection OK */<br />- (void)connectionDidFinishLoading:(NSURLConnection *)connection<br />{<br />	[etats setStringValue:NSLocalizedStringFromTable(@&quot;COK&quot;, @&quot;Localizable&quot;, @&quot;A comment&quot;)];<br />	/* Maintenant qu&#39;on est connecté, on récupère le plist dans notre app :*/<br />	[myArray release];<br />	myArray = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@&quot;http://www.monsite.com&quot;]];<br />	[etats setStringValue:NSLocalizedStringFromTable(@&quot;Lecture&quot;, @&quot;Localizable&quot;, @&quot;A comment&quot;)];<br />	/* Lecture de la liste reçu et création d&#39;une nouvelle liste avec seulement les éléments visibles */<br />	<br />	NSEnumerator *enomerator = [myArray objectEnumerator];<br />	id object;<br />	NSMutableArray *tempArray = [NSMutableArray array];<br />	NSDictionary *fileversion;<br />	<br />	/* Lecture des informations du serveur */<br />	object = [myArray objectAtIndex:0];<br />	[etats setStringValue:[NSString stringWithFormat:NSLocalizedStringFromTable(@&quot;LecServ&quot;, @&quot;Localizable&quot;, @&quot;A comment&quot;),[object objectForKey:@&quot;ServerName&quot;]]];<br />	[tempArray addObject:object];<br />	<br />	//initialisation du progress bar<br />	/*[progress setIndeterminate:NO];<br />	[progress setMaxValue:[myArray count]];<br />	[progress incrementBy:1]; */<br />	//fin init<br />	/* Recherche des mise à  jour disponibles */<br />	while( (object = [enomerator nextObject]) ){<br />		//[progress setDoubleValue:[progress doubleValue]+1];<br />		[etats setStringValue:[NSString stringWithFormat:NSLocalizedStringFromTable(@&quot;LecApp&quot;, @&quot;Localizable&quot;, @&quot;A comment&quot;),[object objectForKey:@&quot;nomproduit&quot;]]];<br />		if([[object objectForKey:@&quot;telechargable&quot;] isEqualToString:@&quot;N&quot;]==YES) [tempArray addObject:object];<br />		else<br />		&nbsp; { <br />			fileversion = nil;<br />			fileversion = [[NSDictionary dictionaryWithContentsOfFile:[NSString stringWithFormat:@&quot;%@/Contents/%@&quot;,[object objectForKey:@&quot;destination&quot;],[object objectForKey:@&quot;emplacementversion&quot;]]] retain];<br />			/* comparaison des versions. condition final : ([[fileversion objectForKey:[object objectForKey:@&quot;itemversion&quot;]] intValue]&lt;=[[object objectForKey:@&quot;version&quot;] intValue])*/<br />			if([[fileversion objectForKey:[object objectForKey:@&quot;itemversion&quot;]] isEqualTo:nil] || ([[fileversion objectForKey:[object objectForKey:@&quot;itemversion&quot;]] intValue]&lt;[[object objectForKey:@&quot;version&quot;] intValue])) [tempArray addObject:object];<br />			/* ^ supprimer si c&#39;est la même version ou si le logiciel n&#39;a pas été trouvé */<br />			<br />		&nbsp; }<br />	}<br />	/* fin recherche mise à  jour dispo */<br />	<br />	[myArray removeObjectsInArray:tempArray];<br />	<br />	//acivation de la checkbox<br />	id tPrototypeCell;<br />	tPrototypeCell = [[[NSButtonCell alloc] initTextCell: @&quot;&quot;] autorelease];<br />	[tPrototypeCell setButtonType:NSSwitchButton];//NSSwitchButton<br />	[tPrototypeCell setImagePosition:NSImageOnly]; // This line is useful if you want to center the checkbox<br />	[tPrototypeCell setControlSize:NSSmallControlSize];<br />	<br />	//[CheckboxInList setDataCell:tPrototypeCell];<br />	[[myTableView tableColumnWithIdentifier: @&quot;recommander&quot;] setDataCell:tPrototypeCell];<br />	[myTableView reloadData];<br /><br />	/* Selection de la 3ieme ligne du tableau */<br />	[myTableView selectRow:0 byExtendingSelection:NO];<br />	<br />	/* On relâche la connexion */<br />	[connection release];<br />	<br />	/* Arrêter la progression */<br />	[progress setIndeterminate:YES];<br />	[progress stopAnimation:nil];<br />	if([myArray count]==0)<br />	&nbsp; {<br />		[etats setStringValue:NSLocalizedStringFromTable(@&quot;NMAJ&quot;, @&quot;Localizable&quot;, @&quot;A comment&quot;)];<br />		[self AlertInfos:NSLocalizedStringFromTable(@&quot;NMAJ&quot;, @&quot;Localizable&quot;, @&quot;A comment&quot;):NSLocalizedStringFromTable(@&quot;NMAJL&quot;, @&quot;Localizable&quot;, @&quot;A comment&quot;)];<br />	&nbsp; }<br />	else<br />	&nbsp; {<br />		[etats setStringValue:NSLocalizedStringFromTable(@&quot;Inactif&quot;, @&quot;Localizable&quot;, @&quot;A comment&quot;)];<br />		//ouverture des propriete<br />		[Propriete open:self];<br />	&nbsp; }<br />}
    
  • wiskywisky Membre
    18:30 modifié #42
    c'est après cette ligne que ça bloque :
    myArray = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@&quot;http://www.monsite.com&quot;]];
    
  • BruBru Membre
    18:30 modifié #43
    dans 1123165421:

    c'est après cette ligne que ça bloque :
    myArray = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@&quot;http://www.monsite.com&quot;]];
    



    Bin... Il ne manque pas le nom de ton fichier dans l'url ?

    Car là , tu indiques bien le nom du serveur, mais pas le nom de la ressource de type plist !

    .
  • wiskywisky Membre
    18:30 modifié #44
    dans 1123165918:

    dans 1123165421:

    c'est après cette ligne que ça bloque :
    myArray = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@&quot;http://www.monsite.com&quot;]];
    



    Bin... Il ne manque pas le nom de ton fichier dans l'url ?

    Car là , tu indiques bien le nom du serveur, mais pas le nom de la ressource de type plist !

    .

    c'est la page index.php qui est retourné par défaut. Elle dénère un contenu plist.
  • fouffouf Membre
    18:30 modifié #45
    Elle génére un contenu plist si tu la lance directement dans ton navigateur. Or initWithContentsOfURL prends juste le contenu de l'URL. Donc, si c'est une génération automatique, ca risque de ne pas marcher.

    Ce que tu peux faire pour vérifier, c'est de faire NSLog(@%@", myArray);
    Ca t'afficheras dans la fenêtre Run Log de XCode le contenu du tableau.
    Par contre, je vais pas t'être d'un grande utilitée pour trouver un moyen de faire marcher cela. Je connais rien à  PHP ::) ;)
  • Eddy58Eddy58 Membre
    août 2005 modifié #46
    Si tu fais un NSLog sur myArray après son initialisation, ça donne quoi ? :o
    [tt]
    myArray = NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@&quot;http://www.monsite.com&quot;;
    NSLog(@myArray:%@",myArray);
    [/tt]

    [EDIT]Ha zut, encore grilled :P
  • wiskywisky Membre
    18:30 modifié #47
    C'est bon ça fonctionne! j'ai enfin trouvé! ;)
  • fouffouf Membre
    18:30 modifié #48
    Quoi donc que c'étais ? ::)
  • wiskywisky Membre
    18:30 modifié #49
    1. La plist n'etait pas en phase avec l'affichage

    2. la façon de changer l'état de la valeur boolean était mauvaise

    3. l'interface n'etait pas en phase avec le code. Ja modifiait le NIB anglais alors que c'était le Français qui était affiché.

    C'est OK pour ça mais j'ai plein de projet! :P ;)
Connectez-vous ou Inscrivez-vous pour répondre.