Lol, je sais pourquoi le compilateur crache, c'est que dans une méthode, j'essayais sans me rendre compte de faire une affectation en même temps que j'essayais d'afficher le résultat de cette affectation.
Mais bon merci xcode de n'avoir pas mieux cibler l'erreur, toute la journée à essayer de trouver le problème !!!!!
Voia qu'on je scroll (peut importe le type du scroll), je récupère les index de toutes les cellules visibles dans ma grille et par la suite je souhaite je souhaite rafraà®chir certaine (après modification de de la cellule).
En même temps c'est pas étonnant, tu charges une image de façon synchrone, dans une boucle for en plus.. Je sais pas si l'UI a le temps de se mettre convenablement à jour d'autant plus que UIImageView fonctionne de manière assez spécifique (l'image n'est pas dessinée dans le -drawRect:)
Donc tu veux dire que si par exemple, dans ma boucle for, la ligne en charge de récupérer l'image dans ma cell, au lieu de l'appeler tel quel, j'appelle une fonction qui serais en charge de le faire, par exemple:
D'accord, mais si je charge mon image via mon URL de manière asynchrone, quand est ce que je saurais que mon image est chargé ? Car du coup je peux pas appellé refreshImageCell:indexCellForRefresh:imageForRefresh: car sinon c'est le risque de l'appellé mais que l'image ne soit pas encore chargé.
Bah quand tu utilises NSURLConnexion pour faire un chargement asynchrone du contenu d'une URL (ici une image), tu as un delegate et donc des méthodes de délégué qui sont appelées quand le téléchargement des données est terminé.
Si tu veux aussi faire plus simple et pas te prendre la tête à réimplémenter tout ce système de téléchargement asynchrone, de signalisation quand le téléchargement est fini, de détection de la cellule à laquelle ça correspondait et re refresh de la bonne cellule si elle n'a pas été recyclée par un scroll entre temps, etc... je te conseille fortement d'aller découvrir le framework AFNetworking.
Ce framework est très puissant et très complet pour tout ce qui est chargement de données sur le réseau, et propose même une catégorie (au sens Objective-C) sur UIImageView (donc étend les capacités des UIImageViews existantes), permettant de spécifier une URL à charger plutôt qu'une image. AFNetworking va alors automatiquement se charger de lancer la requête à cette URL de façon asynchrone, détecter quand l'URL a fini de se charger, et mettre à jour l'UIImage de l'UIImageView en conséquence, et va même également annuler la requête si jamais entre temps tu as demandé à l'UIImageView d'afficher une autre image (le cas typique étant parce que l'utilisateur a scrollé dans ta NRGridView ou UITableView et que les cellules ont été recyclées, pour afficher d'autres données).
Bref, tout est géré automatiquement par ce framework et tu te prendras donc moins la tête.
(En plus il fonctionne avec des blocks, et ça c'est super puissant et pratique)
Voila pour ma gridView, je souhaite avoir une backgroundView, sauf que j'ai beau cherché mais j'ai pas l'impression que cette propriété existe dans ce framework (A moins que je me trompe).
Le problème est que quand je scroll, l'image se répète dans le sens de mon scroll et ne reste pas static. Et franchement c'est moche à voir.
Et pareil quand je passe en position horizontale l'image ne suit pas la position elle reste en position verticale et du coup une partie se répète sur (la droite/gauche suivant le sens de la rotation)
Heuuu, juste une petite question, en sous classant NRGridView pour rajouter le propriéter backgroundView.
Du coup j'imagine que dans mon ViewController ou je travaille initialement avec NRGridView, je vais du coup travailler exclusivement avec la sous classe créer ?
Sinon j'imagine que les modification apporté en sous classant NRGridView, je peux les importer directement dans le framework NRGridView dans les classes NRGridView.h et NRGridView.m avant de builder le framework ? Sa marche aussi ?
Salut, cela fait un petit moment que je me creuse la tête, pour ce backgroundView du coup j'ai fait une sous-classe de NRGridView, (SubNRGridView), OK!
Du coup dans mon viewController qui hérite de NRGridViewContreller et implémente NRGridViewDelegate, je vois pas a quel moment dire que l'objet avec lequel je construit et je travaille ma grille (self.gridView) de type NRGridView, que je veux du coup travailler exclusivement avec un objet de type SubNRGridView.
Est ce que je dois modifié le NRGridViewController du framework ? Ou bien j'ai raté une étape ?
J'utilise la NRGridView avec une seule cell affichée à la fois, en mode vertical.
Marche très bien également.
Y-a-til moyen de forcer le scroll à se positionner sur une seule cellule à la fois lorsque l'on scrolle ? Il ne pourrait donc pas y avoir 2 cellules à cheval lorsque l'on a lâché le scroll.
Il faudrait que le scroll se positionne sur la cellule qui a le plus de surface affichée à l'écran par défaut.
Réponses
Mais c'est bizarre que tu me parle des .m car je n'ai que les .h dans NRGridView
Mais bon merci xcode de n'avoir pas mieux cibler l'erreur, toute la journée à essayer de trouver le problème !!!!!
[/font]
dites j'ai une question !!!
Voia qu'on je scroll (peut importe le type du scroll), je récupère les index de toutes les cellules visibles dans ma grille et par la suite je souhaite je souhaite rafraà®chir certaine (après modification de de la cellule).
Voila mon code:
Le seul soucis est que au lieu de rafraichir les cellule une part une, sa les rafraichis tous à la fin de ma boucle for.
/huh.gif' class='bbc_emoticon' alt='???' />
Tu veux dire un point d'arrêt ?
Une flèche bleue qui apparaà®t quand on clique dans la marge et où le programme s'arrête.
/implore.gif' class='bbc_emoticon' alt=' ' />
J'en ai mis un dans ma fonction:
Et c'est bien ce que je pensais, mes cellules ne sont rafraà®chis qu'après la fin de ma boucle for.
Mais que cette fonction soit appelé de manière asynchrone ?
Si tu veux aussi faire plus simple et pas te prendre la tête à réimplémenter tout ce système de téléchargement asynchrone, de signalisation quand le téléchargement est fini, de détection de la cellule à laquelle ça correspondait et re refresh de la bonne cellule si elle n'a pas été recyclée par un scroll entre temps, etc... je te conseille fortement d'aller découvrir le framework AFNetworking.
Ce framework est très puissant et très complet pour tout ce qui est chargement de données sur le réseau, et propose même une catégorie (au sens Objective-C) sur UIImageView (donc étend les capacités des UIImageViews existantes), permettant de spécifier une URL à charger plutôt qu'une image. AFNetworking va alors automatiquement se charger de lancer la requête à cette URL de façon asynchrone, détecter quand l'URL a fini de se charger, et mettre à jour l'UIImage de l'UIImageView en conséquence, et va même également annuler la requête si jamais entre temps tu as demandé à l'UIImageView d'afficher une autre image (le cas typique étant parce que l'utilisateur a scrollé dans ta NRGridView ou UITableView et que les cellules ont été recyclées, pour afficher d'autres données).
Bref, tout est géré automatiquement par ce framework et tu te prendras donc moins la tête.
(En plus il fonctionne avec des blocks, et ça c'est super puissant et pratique)
Bon dernière question promis !!!
Voila pour ma gridView, je souhaite avoir une backgroundView, sauf que j'ai beau cherché mais j'ai pas l'impression que cette propriété existe dans ce framework (A moins que je me trompe).
Du coup pour contourner le problème:
Le problème est que quand je scroll, l'image se répète dans le sens de mon scroll et ne reste pas static. Et franchement c'est moche à voir.
Et pareil quand je passe en position horizontale l'image ne suit pas la position elle reste en position verticale et du coup une partie se répète sur (la droite/gauche suivant le sens de la rotation)
[/color]
Après je vois pas comment faire dans le .m ?
Désolé pour l'indentation mais CTRL ALT Tab n'a pas l'air d'être pris en compte...
Du coup j'imagine que dans mon ViewController ou je travaille initialement avec NRGridView, je vais du coup travailler exclusivement avec la sous classe créer ?
Sinon j'imagine que les modification apporté en sous classant NRGridView, je peux les importer directement dans le framework NRGridView dans les classes NRGridView.h et NRGridView.m avant de builder le framework ? Sa marche aussi ?
Du coup dans mon viewController qui hérite de NRGridViewContreller et implémente NRGridViewDelegate, je vois pas a quel moment dire que l'objet avec lequel je construit et je travaille ma grille (self.gridView) de type NRGridView, que je veux du coup travailler exclusivement avec un objet de type SubNRGridView.
Est ce que je dois modifié le NRGridViewController du framework ? Ou bien j'ai raté une étape ?
J'utilise la NRGridView avec une seule cell affichée à la fois, en mode vertical.
Marche très bien également.
Y-a-til moyen de forcer le scroll à se positionner sur une seule cellule à la fois lorsque l'on scrolle ? Il ne pourrait donc pas y avoir 2 cellules à cheval lorsque l'on a lâché le scroll.
Il faudrait que le scroll se positionne sur la cellule qui a le plus de surface affichée à l'écran par défaut.
Il y a bien tes 2 méthodes:
- (void)scrollRectToSection:(NSInteger)section
animated:(BOOL)animated
scrollPosition:(NRGridViewScrollPosition)scrollPosition;
- (void)scrollRectToItemAtIndexPath:(NSIndexPath*)indexPath
animated:(BOOL)animated
scrollPosition:(NRGridViewScrollPosition)scrollPosition;
mais je ne vois pas comment ne pas les utiliser pour que ce comportement soit automatique.
Est-ce que c'est possible? Faut-il sous-classer NRGridView pour détecter quand le scroll est lâché et agir en conséquence ?