1) De mémoire, UITableViewCell autoresize les images des backgroundViews. Là , ça ne le fait pas. C'est à dire que si on met une image plus grande dans une cell, elle monte sur la cell suivante. Où faut-il ajouter un autoresize mask dans ton code pour forcer ce comportement ?
Non il faut rajouter [cell setClipsToBounds:YES]; mais c'est autre chose.
Je modifierai le layoutSubviews de la NRGridViewCell, car de mémoire ça prend la taille de l'image, mais je n'ai pas le souvenir d'avoir géré le fait que l'image soit plus grande que la contentView ! Je fais une modification ce soir si c'est bien ça le blem.
Je viens aussi de rajouter le support des footer/section.
J'ai aussi modifié le comportement du scrollRectToSection:animated:scrollPosition. En passant NRGridViewScrollPositionAtBottom/Right on scroll maintenant au bas (ou à droite) de la section. Auparavant ça affichait juste un morceau de la section en bas (ou à droite) de l'écran.. pas très glorieux /biggrin.png' class='bbc_emoticon' alt=':D' />
Cet aprem, j'ai bien réussi à sélectionner une cellule non visible mais il faut scroller pour la voir sélectionnée. Le scroll n'est pas automatique lorsque l'on sélectionne une cellule cachée ? Ce sont 2 choses différentes ?
[font=Helvetica, arial, freesans, clean, sans-serif]NRGridViewLongPressUnhighlightUponPressGestureEnds = 0x01, // Un-highlights the cell when the user's finger lefts the screen[/font]
[font=Helvetica, arial, freesans, clean, sans-serif]NRGridViewLongPressUnhighlightUponScroll = 0x02, // Un-highlights the cell when the user scrolls the gridView.[/font]
[font=Helvetica, arial, freesans, clean, sans-serif]NRGridViewLongPressUnhighlightUponAnotherTouch = 0x04 // Un-highlights the cell when the user touches the same or another cell[/font]
ça dépend, tu peux très bien gérer un mode édition dans ton viewController, et faire en sorte d'ajouter les indexPath de chacune des lignes sélectionnées (cf ce que t'as expliqué Ceetix) dans une array uniquement si [self isEditing] est vrai (un UIViewController possède une property 'editing').
En soit, c'est pas bien compliqué, c'est juste chiant effectivement de devoir le gérer comme ça alors que le composant pourrait le faire, mais bon on a bien du attendre iOS 5.0 pour que UITableView puisse le faire alors ne nous plaignons pas /smile.png' class='bbc_emoticon' alt=':)' />
Je confirme que ce code m'amène bien au bon endroit dans la grille, donc cette méthode a l'air de marcher, mais la cellule ne s'illumine pas avec le selectedBackground.
Qu'est-ce-que j'aurais pu oublier pour que ça marche ?
EDIT: sachant que mon selectionBackgroundView est bien défini:
À quel moment tu le fais ? Dans le -viewDidAppear: ça marche très bien chez moi. Mais pas dans le -viewWillAppear:. La raison est simple, au moment du viewWillAppear:, la NRGridViewController déselectionne les cellules précédemment sélectionnées..
Je vais rajouter une propriété (comme UITableView) permettant d'activer ou non ce comportement.
C'est bon. J'ai rajouté la propriété, et du coup j'ai déplacé le code de déselection dans -viewWillAppear: plutôt que -viewDidAppear: (je trouvais ça mieux à la base car on avait bien le temps de voir la désélection dans un contexte animé, mais ça peut éventuellement poser problème pour certains /biggrin.png' class='bbc_emoticon' alt=':D' />)
Réponses
J'effaçais la frame de mon XIB en redéfinissant NRGridView, ça je le savais.
Il fallait non seulement ajouter la frame, mais aussi un addSubview de NRGridView (en fait, je peux virer l'outlet, il sert plus à rien).
Donc, au passage, le NRGridViewLayoutStyleHorizontal marche parfaitement. /thumbsup.gif' class='bbc_emoticon' alt='' /> /thumbsup.gif' class='bbc_emoticon' alt='' /> /thumbsup.gif' class='bbc_emoticon' alt='' />
- (void)loadView
{
/color][color=#b9369d]super[/color][color=#000000] [/color]loadView[color=#000000;
self.gridView = [[/color][color=#4f8085]NRGridView[/color][color=#000000] [/color][color=#3f277d]alloc[/color][color=#000000 initWithLayoutStyle:NRGridViewLayoutStyleHorizontal] autorelease];
/color][color=#b9369d]self[/color][color=#000000].[/color][color=#6f43a4]view[/color][color=#000000] [/color]addSubview[color=#000000]:[/color][color=#b9369d]self[/color][color=#000000].[/color][color=#4f8085]gridView[/color][color=#000000;
#ifdef TARGET_OS_PAD
self.gridView.frame = CGRectMake(0.0, 20.0, 704.0, 80.0);
[/color][color=#b9369d]self[/color][color=#000000] [/color]gridView[color=#000000 setCellSize:CGSizeMake(176.0, 80.0)];
#endif
}
Question:
1) De mémoire, UITableViewCell autoresize les images des backgroundViews. Là , ça ne le fait pas. C'est à dire que si on met une image plus grande dans une cell, elle monte sur la cell suivante. Où faut-il ajouter un autoresize mask dans ton code pour forcer ce comportement ?
2) Je te fais des tests de perfs cette semaine.
Je modifierai le layoutSubviews de la NRGridViewCell, car de mémoire ça prend la taille de l'image, mais je n'ai pas le souvenir d'avoir géré le fait que l'image soit plus grande que la contentView ! Je fais une modification ce soir si c'est bien ça le blem.
Je viens aussi de rajouter le support des footer/section.
J'ai aussi modifié le comportement du scrollRectToSection:animated:scrollPosition. En passant NRGridViewScrollPositionAtBottom/Right on scroll maintenant au bas (ou à droite) de la section. Auparavant ça affichait juste un morceau de la section en bas (ou à droite) de l'écran.. pas très glorieux /biggrin.png' class='bbc_emoticon' alt=':D' />
Cet aprem, j'ai bien réussi à sélectionner une cellule non visible mais il faut scroller pour la voir sélectionnée. Le scroll n'est pas automatique lorsque l'on sélectionne une cellule cachée ? Ce sont 2 choses différentes ?
Faut faire connaà®tre ta classe, elle va faire un malheur. /cheer.gif' class='bbc_emoticon' alt=' ' />
Merci pour cette petite classe bien sympathique.
As-tu prévu un portage sous OS X? se serait parfait /smile.png' class='bbc_emoticon' alt=':)' />
Alors que NSTableView ne se base que sur du 100% drawing via NSCell.
Tu as un contrôle open source équivalent 'JUCollectionView'
voir ici http://cocoacontrols.com/platforms/mac-os-x/controls/jucollectionview
NRGridView a été mis à jour et rajoute le support d'un appui long sur n'importe quelle cellule.
Et un petit exemple de l'implémentation dans un gridViewController:
[/size][/size]
Je viens de jouer un peu avec ton control. Il est bien sympa mais je me suis surpris à rêver de certaines fonctionnalités:
- Avoir un mode avec une cellule faisant toute la largeur de la vue mais avec plusieurs colonne (comme une grille avec sections)
- Avoir une seule ligne par section (si plus d'items que possible, les avoir en coverflow)
Oui je sais, ce ne sont pas forcément les choses les plus triviales /smile.png' class='bbc_emoticon' alt=':)' />
j'ai une question concernant NRGridView, je me demandais s'il étais possible de faire de la sélection multiple, à défaut de et
qui ne permettent de gérer que la sélection simple.
Quand je fais un simple clique sur une cellule et ensuite pareil sur une autre, la sélection d'avant s'efface.
Mais ça ne devrait pas tarder à arriver (Septembre au plus tard), car je vais avoir besoin d'implémenter l'édition, et donc selection multiple.
Et donc pas possible pour le moment de gérer la sélection multiple ?
/crybaby.gif' class='bbc_emoticon' alt=' ' />
En soit, c'est pas bien compliqué, c'est juste chiant effectivement de devoir le gérer comme ça alors que le composant pourrait le faire, mais bon on a bien du attendre iOS 5.0 pour que UITableView puisse le faire alors ne nous plaignons pas /smile.png' class='bbc_emoticon' alt=':)' />
Je sais je suis chiant /tongue.png' class='bbc_emoticon' alt=':P' />
Je n'arrive pas à mettre en évidence une cellule de NRGridView avec:
Je confirme que ce code m'amène bien au bon endroit dans la grille, donc cette méthode a l'air de marcher, mais la cellule ne s'illumine pas avec le selectedBackground.
Qu'est-ce-que j'aurais pu oublier pour que ça marche ?
EDIT: sachant que mon selectionBackgroundView est bien défini:
Je vais rajouter une propriété (comme UITableView) permettant d'activer ou non ce comportement.