UICollectionView registerClass: forCellWithReuseIdentifier méthode des sauts de UICollectionView
Quel est le rôle de registerClass:forCellWithReuseIdentifier:
méthode?
Selon Apple developer documentation il est censé
"Inscrire une classe pour la création de la nouvelle collection de visualiser les cellules."
Lorsque j'essaie d'utiliser mon projet-je obtenir un noir à la vue de collection. Quand j'ai supprimer tout fonctionne bien.
#define cellId @"cellId"
#import "ViewController.h"
#import "Cell.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UICollectionView *collectionView;
@property(strong, nonatomic)NSMutableArray * photoArray;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//Do any additional setup after loading the view, typically from a nib.
NSLog(@"%@",_photoArray);
_photoArray = [[NSMutableArray alloc]initWithCapacity:0];
[_collectionView registerClass:[Cell class] forCellWithReuseIdentifier:cellId];
for(int i=1;i<=12;i++)
{
NSString * imgName = [NSString stringWithFormat:@"%d.png",i];
UIImage *img = [UIImage imageNamed:imgName];
[_photoArray addObject:img];
}
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return _photoArray.count;
}
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
return 1;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
Cell* cell = [_collectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];
cell.cellImage.image = [_photoArray objectAtIndex:indexPath.row];
return cell;
}
- Est votre vue de collection en cours de création de l'IB?
- Oui, à l'aide de storyboard
Vous devez vous connecter pour publier un commentaire.
Si vous avez déjà créé votre UICollectionView dans le Storyboard, connecté à votre
dataSource
etdelegate
, et vous avez ajouté toutes les méthodes requises:numberOfItemsInSection
(pas une méthode requise - reportez-vous à ce commentaire)numberOfSectionsInCollectionView
cellForItemAtIndexPath
Puis le
registerClass
/registerCell
méthode n'est pas obligatoire. Toutefois, si vous avez besoin de réutiliser une vue, de données, ou des cellules, alors vous devriez utiliser ces méthodes afin que iOS pouvez remplir votre UICollectionView en tant que de besoin. Cela peut aussi être fait dans votre Storyboard par le réglage de la Prototype de Cellule (le même principe que leregisterClass
méthode.Aussi, si vous êtes à la recherche pour une bonne explication sur ce
registerCell
et comment l'utiliser découvrez ce lien et faites défiler vers le bas de la section intitulée "de la Cellule et en Vue de les Réutiliser."numberOfSectionsInCollectionView:
n'est pas une 'méthode'. Comme par la Documentation d'Apple,If you do not implement this method, the collection view uses a default value of 1.
registerClass:...
. L'utilisation de la mémoire ou de la cellule de réutilisation de ne pas vraiment avoir rien à faire avec cela. La vue d'une collection ne se charge jamais de cellules de mémoire qui ne sont pas sur l'écran, et si la cellule identifiant n'a pas été enregistré, la ligne où il retire une cellule de plante.D'accord avec RazorSharp réponse et je voulais souligner que cette phrase-clé pour moi dans le Techtopia lien est: