2013-10-30 46 views
2

我在我的项目中有Collectionview ...它正确地在ipad和iphone上工作...但不在ipod中...版本的ipod id IOS7 ...可以告诉我什么是问题..我有什么做的...... 我的代码是继Collectionview问题在ipod

 _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; 
} 
+1

有什么问题?在iPod上运行时遇到什么问题? –

+1

[cell.contentView addSubview:];而不是单元格addSubview –

+0

@JanakNirmal它的崩溃.. –

回答

2

的问题是,你是dequeing细胞,

UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath]; 

的事情是,你不检查零.. !

使用以下条件,

if(cell==nil) 
{ 
//then alloc cell 
}