I have a problem with data reloading using UICollectionView
. I have this array on the viewDidLoad
to fill the UICollectionView.
array = [[NSMutableArray alloc] init];
[array addObject:@"1"];
[array addObject:@"2"];
[array addObject:@"3"];
[array addObject:@"4"];
[array addObject:@"5"];
[array addObject:@"6"];
and the method:
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"Cell";
//cell = [[UICollectionViewCell alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
myCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 0, 100, 20)];
[titleLabel setText:[array objectAtIndex:indexPath.row]];
titleLabel.textColor = [UIColor whiteColor];
titleLabel.backgroundColor = [UIColor clearColor];
[cell addSubview:titleLabel];
return cell;
}
I tap the UIButton
and data is reloaded:
[myCollectionView reloadData];
Here how the data looks like before and after the reload:
It is quit late, but here is my solution.
if you used custom collectionviewcell try to use 'func prepareForReuse()'
You add a new label each time you tap the reload button. You should add the label once and change the label text according.
Here a simple example.
where
MyCell
will contains aUILabel
and a property to modify its text.I really suggest to take a look at Fun with UICollectionView code by @Ben Scheirman.
Hope that helps.
P.S. Rename
myCell
toMyCell
. A class should start with an uppercase letter.You are adding your label when you tap reload button. In that case you are adding label again and again...
So there are three solutions:
text
length is not equal to zero. In that case no need to add that label and change text.