Gestire le CollectionView

      Nessun commento su Gestire le CollectionView

Recipe-Collection-View-with-Insets

Nel tutorial precedente abbiamo introdotto le UICollectionView(link) ,ma poichè alcuni utenti hanno avuto difficoltà ad utilizzare quest’oggetto tramite storyboard   ho deciso di creare un nuovo tutorial per rendere le idee più chiare a tutti.

Iniziamo subito con un esempio pratico quindi  creiamo un nuovo progetto di tipo single view application e spostiamoci nel file xib.

All’interno della view principale inseriamo un oggetto di tipo Collection View

collection

Come avviene in maniera analoga alle tabelle ora dobbiamo settare il data source e il delegate.

Nel file viewController.h scriviamo il seguente codice:

[code lang=”obj-c”]@interface ViewController : UIViewController<UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>

@property (weak, nonatomic) IBOutlet UICollectionView *collectionView;

@property(nonatomic,retain)NSArray *foto;

@end[/code]

Ora  dobbiamo creare una cella quindi dobbiamo creare una sottoclasse di UICollectionViewCell.

Schermata 2013-09-08 alle 12.38.59

Nel File  MiaCella Dichiariamo due oggetti uno di tipo UIImageView e un ‘altra di tipo label , questi sono gli elementi che andranno a caratterizzare la nostra cella.

[code lang=”obj-c”]

@interface MiaCella : UICollectionViewCell

@property(nonatomic,weak)UIImageView *imageView;

@end

[/code ]

Ora nel file MiaCella.m  dobbiamo inizializzare il tutto

[code lang="obj-c"]

-(id)initWithFrame:(CGRect)frame{

self=[super initWithFrame:frame];

if (self) {

//settiamo l’imageview

self.imageView=[[UIImageView alloc]initWithFrame:CGRectMake(1, 0, 50, 50)];

[self.imageView setContentMode:UIViewContentModeScaleAspectFill];

[self.imageView setClipsToBounds:YES];

[self.contentView addSubview:self.imageView];

}

return self;

}

[/code ]

Torniamo all’interno del fil ViewController e importiamo la nostra classe MiaCella

&nbsp;

[code lang="obj-c"]

– (void)viewDidLoad

{

[super viewDidLoad];

self.foto=[[NSArray alloc]initWithObjects:@"cane.jpeg",@"gatto.jpeg",@"cavallo.jpeg",@"maiale.jpg",@"lupo.jpg",@"foca.jpg",@"bird.jpg",nil];

//Con questa riga non abbiamo fatto altro che registrare la nostra classe e dargli un ID

[self.collectionView registerClass:[MiaCella class] forCellWithReuseIdentifier:@"Mia_Cella"];

&nbsp;

}

&nbsp;

//metodo utilizzato  per impostare il numero di celle

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{

return [self.foto count];

}

//metodo per l’impostazione del contenuto delle celle

-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

MiaCella *miaCella=[collectionView dequeueReusableCellWithReuseIdentifier:@"Mia_Cella" forIndexPath:indexPath];

miaCella.imageView.image=[ UIImage imageNamed:[self.foto  objectAtIndex:indexPath.row]];

return miaCella;

}

&nbsp;

//metodo per dimensione delle celle

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{

return CGSizeMake(55, 55);

}

//metodo per settare lo spazio tra le colonne

-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{

return 3;

}

[/code]

Schermata 2013-09-08 alle 13.24.12

download_esempio-300x120