NRGridView
yass_1988
Membre
Bonjour à tous,
je suis en ce moment en train de mettre en place le framework "NRGridView". Pour tester j'ai essayé de le mettre en place avec l'exemple fourni sur github. Sa marche.
Du coup pour ceux qui connaissent bien ce framework, est ce que à la fin de remplissage de la grille avec les cellules et de son affichage, est il possible de reparcourir toute les cellules, changer leur contenu (Ex: changer d'image) et de modifier du coup la vue au fur et à mesure?
Voila le viewController.m de l'exemple fourni sur github:
Merci d'avance
je suis en ce moment en train de mettre en place le framework "NRGridView". Pour tester j'ai essayé de le mettre en place avec l'exemple fourni sur github. Sa marche.
Du coup pour ceux qui connaissent bien ce framework, est ce que à la fin de remplissage de la grille avec les cellules et de son affichage, est il possible de reparcourir toute les cellules, changer leur contenu (Ex: changer d'image) et de modifier du coup la vue au fur et à mesure?
Voila le viewController.m de l'exemple fourni sur github:
<br />
<br />
<br />
[color=#999999][b]#import "MyGridViewController.h"[/b][/color]<br />
<br />
[b]static[/b] CGFloat [b]const[/b] _kNRGridViewSampleCrazyScrollEnabled [b]=[/b] NO; [color=#999988][i]// For the lulz.[/i][/color]<br />
[b]@implementation[/b] [color=#445588][b]MyGridViewController[/b][/color]<br />
<br />
[color=#999999][b]#pragma mark - Crazy Scroll LULZ[/b][/color]<br />
<br />
[b]-[/b] ([color=#445588][b]void[/b][/color])[color=#990000][b]__beginGeneratingCrazyScrolls[/b][/color]<br />
{<br />
[b]if[/b](_kNRGridViewSampleCrazyScrollEnabled[b]==[/b]NO)[b]return[/b];<br />
<br />
NSInteger randomSection [b]=[/b] arc4random() [b]%[/b] ([[[self gridView] dataSource] respondsToSelector:[b]@selector[/b](numberOfSectionsInGridView:)]<br />
[b]?[/b] [[[self gridView] dataSource] numberOfSectionsInGridView:[self gridView]]<br />
[b]:[/b] [color=#009999]1[/color]);<br />
NSInteger randomItemIndex [b]=[/b] arc4random() [b]%[/b] [[[self gridView] dataSource] gridView:[self gridView]<br />
numberOfItemsInSection:randomSection];<br />
<br />
<br />
[[self gridView] selectCellAtIndexPath:[NSIndexPath indexPathForItemIndex:randomItemIndex inSection:randomSection]<br />
autoScroll:YES<br />
scrollPosition:NRGridViewScrollPositionAtMiddle<br />
animated:YES];<br />
<br />
[color=#999988][i]/*[/i][/color]<br />
[color=#999988][i][[self gridView] scrollRectToSection:randomSection [/i][/color]<br />
[color=#999988][i]animated:YES [/i][/color]<br />
[color=#999988][i]scrollPosition:NRGridViewScrollPositionAtBottom];[/i][/color]<br />
[color=#999988][i]*/[/i][/color]<br />
<br />
[self performSelector:[b]@selector[/b](__beginGeneratingCrazyScrolls)<br />
withObject:[color=#0086B3]nil[/color]<br />
afterDelay:[color=#009999]2.5[/color]<br />
inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];<br />
}<br />
<br />
[b]-[/b] ([color=#445588][b]void[/b][/color])[color=#990000][b]__endGeneratingCrazyScrolls[/b][/color]<br />
{<br />
[NSObject cancelPreviousPerformRequestsWithTarget:self<br />
selector:[b]@selector[/b](__beginGeneratingCrazyScrolls)<br />
object:[color=#0086B3]nil[/color]];<br />
}<br />
<br />
[b]-[/b] ([color=#445588][b]void[/b][/color])[color=#990000][b]viewDidAppear:[/b][/color]([color=#445588][b]BOOL[/b][/color])[color=#008080]animated[/color]<br />
{<br />
[super viewDidAppear:animated];<br />
[self __beginGeneratingCrazyScrolls];<br />
}<br />
<br />
[b]-[/b] ([color=#445588][b]void[/b][/color])[color=#990000][b]viewWillDisappear:[/b][/color]([color=#445588][b]BOOL[/b][/color])[color=#008080]animated[/color]<br />
{<br />
[super viewWillDisappear:animated];<br />
[self __endGeneratingCrazyScrolls];<br />
}<br />
<br />
[color=#999999][b]#pragma mark -[/b][/color]<br />
<br />
[b]-[/b] ([color=#445588][b]id[/b][/color])[color=#990000][b]initWithNibName:[/b][/color](NSString [b]*[/b])[color=#008080]nibNameOrNil[/color] [color=#990000][b]bundle:[/b][/color](NSBundle [b]*[/b])[color=#008080]nibBundleOrNil[/color]<br />
{<br />
self [b]=[/b] [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];<br />
[b]if[/b] (self) {<br />
[color=#999988][i]// Custom initialization[/i][/color]<br />
}<br />
[b]return[/b] self;<br />
}<br />
<br />
[color=#999999][b]#pragma mark - View lifecycle[/b][/color]<br />
[b]-[/b] ([color=#445588][b]BOOL[/b][/color])[color=#990000][b]canBecomeFirstResponder[/b][/color]{[b]return[/b] YES;}<br />
<br />
[b]-[/b] ([color=#445588][b]void[/b][/color])[color=#990000][b]loadView[/b][/color]<br />
{<br />
[super loadView];<br />
[[self gridView] setCellSize:CGSizeMake([color=#009999]100[/color], [color=#009999]75[/color])];<br />
}<br />
<br />
[color=#999988][i]// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.[/i][/color]<br />
[b]-[/b] ([color=#445588][b]void[/b][/color])[color=#990000][b]viewDidLoad[/b][/color]<br />
{<br />
[super viewDidLoad];<br />
}<br />
<br />
[b]-[/b] ([color=#445588][b]BOOL[/b][/color])[color=#990000][b]shouldAutorotateToInterfaceOrientation:[/b][/color](UIInterfaceOrientation)[color=#008080]interfaceOrientation[/color]<br />
{<br />
[color=#999988][i]// Return YES for supported orientations[/i][/color]<br />
[b]return[/b] YES;<br />
}<br />
<br />
<br />
[color=#999999][b]#pragma mark - NRGridView Data Source[/b][/color]<br />
<br />
<br />
<br />
[b]-[/b] (NSInteger)[color=#990000][b]numberOfSectionsInGridView:[/b][/color](NRGridView [b]*[/b])[color=#008080]gridView[/color]<br />
{<br />
[b]return[/b] [color=#009999]5[/color];<br />
}<br />
<br />
[b]-[/b] (NSInteger)[color=#990000][b]gridView:[/b][/color](NRGridView [b]*[/b])[color=#008080]gridView[/color] [color=#990000][b]numberOfItemsInSection:[/b][/color](NSInteger)[color=#008080]section[/color]<br />
{<br />
[b]return[/b] [color=#009999]50[/color];<br />
}<br />
<br />
[b]-[/b] (NSString[b]*[/b])[color=#990000][b]gridView:[/b][/color](NRGridView [b]*[/b])[color=#008080]gridView[/color] [color=#990000][b]titleForHeaderInSection:[/b][/color](NSInteger)[color=#008080]section[/color]<br />
{<br />
[b]return[/b] [NSString stringWithFormat:[color=#DD1144]@"Section %i"[/color], section];<br />
}<br />
<br />
[b]-[/b] (NSString[b]*[/b])[color=#990000][b]gridView:[/b][/color](NRGridView [b]*[/b])[color=#008080]gridView[/color] [color=#990000][b]titleForFooterInSection:[/b][/color](NSInteger)[color=#008080]section[/color]<br />
{<br />
[b]if[/b](section[b]%[/b][color=#009999]2[/color])<br />
[b]return[/b] [NSString stringWithFormat:[color=#DD1144]@"Footer %i"[/color], section];<br />
[b]return[/b] [color=#0086B3]nil[/color];<br />
}<br />
<br />
<br />
[b]-[/b] (NRGridViewCell[b]*[/b])[color=#990000][b]gridView:[/b][/color](NRGridView [b]*[/b])[color=#008080]gridView[/color] [color=#990000][b]cellForItemAtIndexPath:[/b][/color](NSIndexPath [b]*[/b])[color=#008080]indexPath[/color]<br />
{<br />
[b]static[/b] NSString [b]*[/b]MyCellIdentifier [b]=[/b] [color=#DD1144]@"MyCellIdentifier"[/color];<br />
<br />
NRGridViewCell[b]*[/b] cell [b]=[/b] [gridView dequeueReusableCellWithIdentifier:MyCellIdentifier];<br />
<br />
[b]if[/b](cell [b]==[/b] [color=#0086B3]nil[/color]){<br />
cell [b]=[/b] [[[NRGridViewCell alloc] initWithReuseIdentifier:MyCellIdentifier] autorelease];<br />
<br />
[[cell textLabel] setFont:[UIFont boldSystemFontOfSize:[color=#009999]11.[/color]]];<br />
[[cell detailedTextLabel] setFont:[UIFont systemFontOfSize:[color=#009999]11.[/color]]];<br />
<br />
}<br />
<br />
cell.imageView.image [b]=[/b] [UIImage imageNamed:[NSString stringWithFormat:[color=#DD1144]@"%i.png"[/color], (indexPath.row[b]%[/b][color=#009999]7[/color])]];<br />
cell.textLabel.text [b]=[/b] [NSString stringWithFormat:[color=#DD1144]@"Item %i"[/color], indexPath.itemIndex];<br />
cell.detailedTextLabel.text [b]=[/b] [color=#DD1144]@"Some details"[/color];<br />
<br />
[b]return[/b] cell;<br />
}<br />
<br />
[color=#999999][b]#pragma mark - NRGridView Delegate[/b][/color]<br />
<br />
[b]-[/b] ([color=#445588][b]void[/b][/color])[color=#990000][b]gridView:[/b][/color](NRGridView [b]*[/b])[color=#008080]gridView[/color] [color=#990000][b]didSelectCellAtIndexPath:[/b][/color](NSIndexPath [b]*[/b])[color=#008080]indexPath[/color]<br />
{<br />
MyGridViewController [b]*[/b]gridViewController [b]=[/b] [[MyGridViewController alloc] initWithGridLayoutStyle:([self gridLayoutStyle] [b]==[/b] NRGridViewLayoutStyleVertical<br />
[b]?[/b] NRGridViewLayoutStyleHorizontal<br />
[b]:[/b] NRGridViewLayoutStyleVertical)];<br />
[[self navigationController] pushViewController:gridViewController<br />
animated:YES];<br />
[gridViewController release];<br />
}<br />
<br />
[b]-[/b] ([color=#445588][b]void[/b][/color])[color=#990000][b]gridView:[/b][/color](NRGridView [b]*[/b])[color=#008080]gridView[/color] [color=#990000][b]didLongPressCellAtIndexPath:[/b][/color](NSIndexPath [b]*[/b])[color=#008080]indexPath[/color]<br />
{<br />
UIMenuController[b]*[/b] menuController [b]=[/b] [UIMenuController sharedMenuController];<br />
NRGridViewCell[b]*[/b] cell [b]=[/b] [gridView cellAtIndexPath:indexPath];<br />
<br />
[self becomeFirstResponder];<br />
[menuController setMenuItems:[NSArray arrayWithObject:[[[UIMenuItem alloc] initWithTitle:[color=#DD1144]@"Hooorayyyy!"[/color]<br />
action:[b]@selector[/b](handleHooray:)] autorelease]]];<br />
[menuController setTargetRect:[cell frame]<br />
inView:[self view]];<br />
<br />
[menuController setMenuVisible:YES animated:YES];<br />
<br />
}<br />
<br />
[color=#999999][b]#pragma mark - UIMenuController Actions[/b][/color]<br />
<br />
[b]-[/b] ([color=#445588][b]void[/b][/color])[color=#990000][b]handleHooray:[/b][/color]([color=#445588][b]id[/b][/color])[color=#008080]sender[/color]<br />
{<br />
[[self gridView] unhighlightPressuredCellAnimated:YES];<br />
}<br />
<br />
[b]-[/b] ([color=#445588][b]BOOL[/b][/color])[color=#990000][b]canPerformAction:[/b][/color]([color=#445588][b]SEL[/b][/color])[color=#008080]action[/color] [color=#990000][b]withSender:[/b][/color]([color=#445588][b]id[/b][/color])[color=#008080]sender[/color]<br />
{<br />
[b]return[/b] (action [b]==[/b] [b]@selector[/b](handleHooray:));<br />
}<br />
<br />
[color=#999999][b]#pragma mark - Memory Management[/b][/color]<br />
<br />
<br />
[b]-[/b] ([color=#445588][b]void[/b][/color])[color=#990000][b]didReceiveMemoryWarning[/b][/color]<br />
{<br />
[color=#999988][i]// Releases the view if it doesn't have a superview.[/i][/color]<br />
[super didReceiveMemoryWarning];<br />
<br />
[color=#999988][i]// Release any cached data, images, etc that aren't in use.[/i][/color]<br />
}<br />
[b]-[/b] ([color=#445588][b]void[/b][/color])[color=#990000][b]viewDidUnload[/b][/color]<br />
{<br />
[super viewDidUnload];<br />
[color=#999988][i]// Release any retained subviews of the main view.[/i][/color]<br />
[color=#999988][i]// e.g. self.myOutlet = nil;[/i][/color]<br />
}<br />
<br />
[b]-[/b] ([color=#445588][b]void[/b][/color])[color=#990000][b]dealloc[/b][/color]<br />
{<br />
[super dealloc];<br />
}<br />
<br />
[b]@end[/b]<br />
[b]
[/b]Merci d'avance
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu as juste besoin des fonctions similaires à une tableView, le header si besoin, le nb de cellules par sections, la construction de la cellule, l'action à la sélection et en option sur un appui long. Tu set le delegate et le datasource, c'est exactement comme une TableView Classique.
Du coup je pense bien récupérer ma première cellule, je modifie son image mais du coup pour la réinsérer dans ma grille et réactualiser la vue de ma grille, je sais pas comment faire.
[/color][/color]
sa marche.
Rien de tel qu'une bonne fessée.
Nan mais tu as déjà utilisé une bête UITableView de base, juste ?
NRGridView utilise la même API, faut faire pareil... et utiliser les méthodes de DataSource, pas faire du insertSubview qui sort d'on ne sait-où !
Mais il y a une manière de commenter svp.
Regarde comment fonctionne une UITableView, c'est pas compliqué et ensuite tu comprendras comment utiliser la class. Pour cela tu as la doc et pléthore de tutos sur le net.
Bon courage
1)Est ce que une méthode existe pour pourvoir détecter un scroll de l'utilisateur
2) Si oui est il possible de récupérer du coup l'index de la première et dernière cellule qui apparaissent sur la vue après un scroll (Pas l'index de la première et dernière cellule de la grille, mais juste ceux apparaissent sur le devise ou le simulateur)
j'ai cherché comment faire dans les docs et pas trouvé grand chose
(Soit j'ai mal cherché ou alors mon niveau d'anglais ne doit pas être top)
Merci
UITableView hérite de UIScrollView. Il existe un méthode dans UIScrollViewDelegate pour être averti des scrolls.
-[UITableView indexPathsForVisibleRows];
Merci
comme j'utilise le framework "NRGridView", j'utilise indexPathsForVisibleCells.
Sauf que quand je scroll, l'application s'arrête et j'ai ce message qui apparait:
SubNrGridViewCell est une sous classe de NRGridViewCell, qui me sert à placer correctement mon image et mon textLabel exactement comme je ferais avec une sous-classe de UITableViewCell.
du coup j'utilise:
Voila la réponse
Du coup je récupère bien le frame et le layer de mes cellules visibles, mais je ne sais pas si avec je peux récupérer leur index.
Une solution ?
Pourtant elle hérite bien de NRGRidViewCell /huh.gif' class='bbc_emoticon' alt='???' />
Je n'arrive pas à savoir pourquoi sa fonctionne pas
Pourtant la construction du build s'est bien passé /huh.gif' class='bbc_emoticon' alt='???' />
Je comprend pas, visiblement la compilation échoue à une étape et cela serait lors de la compilation de mon AppViewController.m, classe ou j'utilise NRGridView
Dans la barre de droite, clique sur l'icône représentant un fichier.
Tu as une rubrique Target Membership.
Si c'est coché, alors le fichier est ajouté à la cible (exécutable) en question.