我的项目中有Collectionview ...它在ipad和iphone中正常工作..但不在ipod ...版本的ipod id IOS7 ..任何人都可以告诉我这是什么问题。我必须要做什么做... 我的代码正在关注
_collectionView=[[UICollectionView alloc] initWithFrame:CGRectMake(-5, 0, self.view.bounds.size.width, height) collectionViewLayout:layout];
[_collectionView setDataSource:self];
[_collectionView setDelegate:self];
[_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cellIdentifier"];
[_collectionView setBackgroundColor:[UIColor whiteColor]];
[_collectionView setShowsHorizontalScrollIndicator:NO];
[_collectionView setShowsVerticalScrollIndicator:NO];
[self.view addSubview:_collectionView];
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return arrayMonths.count;
}
// The cell that is returned must be retrieved from a call to - dequeueReusableCellWithReuseIdentifier:forIndexPath:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
for(UIView *subview in [cell subviews]) {
[subview removeFromSuperview];
}
MonthView *month=[arrayMonths objectAtIndex:indexPath.row];
if ([month.strMonthName isEqualToString:@"February"]) {
UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(0, -5, cell.frame.size.width, 40)];
[label setText:[NSString stringWithFormat:@"%@ - %@",[[NSUserDefaults standardUserDefaults] valueForKey:@"KiCalName"],month.strYear]];
label.textAlignment=NSTextAlignmentCenter;
[label setFont:[UIFont fontWithName:@"AmericanTypewriter-Bold" size:12.0]];
[cell addSubview:label];
[month setFrame:CGRectMake(0, 35, month.frame.size.width, month.frame.size.height)];
}else if([month.strMonthName isEqualToString:@"January"] || [month.strMonthName isEqualToString:@"March"]){
[month setFrame:CGRectMake(0, 35, month.frame.size.width, month.frame.size.height)];
}
[cell addSubview:month];
[hud hide:YES];
return cell;
}
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
MonthView *monthOld=[arrayMonths objectAtIndex:indexPath.row];
CGRect rectNew=CGRectMake(monthOld.frame.origin.x, monthOld.frame.origin.y, monthOld.frame.size.width+40, monthOld.frame.size.height+40);
MonthView *month=[[MonthView alloc]initWithFrame:monthOld.frame andYear:monthOld.strYear andMonth:monthOld.strMonthName andNoOfDays:monthOld.noOfDays andArrayOffDays:monthOld.arrayOFF andArrayOnDays:monthOld.arrayONN];
[month setBackgroundColor:[UIColor whiteColor]];
UIView *view=[[UIView alloc]initWithFrame:rectNew];
[view setBackgroundColor:[UIColor whiteColor]];
[month setFrame:CGRectMake(20, 20, month.frame.size.width, month.frame.size.height)];
[view addSubview:month];
[[KGModal sharedInstance] setShowCloseButton:NO];
[[KGModal sharedInstance] showWithContentView:view andAnimated:NO];
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
MonthView *month=[arrayMonths objectAtIndex:indexPath.row];
NSLog(@"month name %@",month.strMonthName);
NSLog(@"month %@",month);
CGSize height;
height=CGSizeMake(105, 155);
if ([month.strMonthName isEqualToString:@"January"]) {
height=CGSizeMake(105, 190);
NSLog(@"called");
}else if ([month.strMonthName isEqualToString:@"February"]){
height=CGSizeMake(105, 190);
NSLog(@"called");
}else if ([month.strMonthName isEqualToString:@"March"]){
height=CGSizeMake(105, 190);
NSLog(@"called");
}else{
}
return height;
}
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
return 1;
}
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
return 1;
}
答案 0 :(得分:2)
问题在于您正在对单元格进行二重驱动,
UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
问题是你没有检查零.. !!!
使用以下条件
if(cell==nil)
{
//then alloc cell
}