2014-09-23 6 views
0

collectionView cell을 선택하여 다시로드했지만보기가 첫 번째 선택시 표시되지 않습니다. 은 다시 셀을 클릭 할 때만 표시됩니다. collectionView의 첫 번째로드는 collectionView 셀의 첫 번째 선택에서 추가 된 뷰가 추가되지만 보이지는 않지만 크기는 증가하고 두 번째 선택 후에 뷰만 표시됩니다.uicollectionview에 추가 된보기가 선택 중에 추가 된 셀이 표시되지 않습니다.

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ 
selectedIndexPath = indexPath; 
    PastPicksGameCollectionViewCell *cell = (PastPicksGameCollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath]; 
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(50,122, 150, 120)]; 
[view setBackgroundColor:[UIColor blueColor]]; 
[cell.contentView addSubview:view] 
    [pastPicksGameCollectionView reloadItemsAtIndexPaths:@[selectedIndexPath]]; 
} 

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 
if ([indexPath isEqual:selectedIndexPath]) { 
    return CGSizeMake(320, 200); 
} 
return CGSizeMake(300, 120); 
} 

답변

0

내가 reloadItemsAtIndexPaths: 당신에 대해 노력하고 있습니다 생각 : 그것은 해당 항목과 관련된 세포 대기열에서 새로운 셀을로드하고 (그냥 서브 뷰에 추가 한 즉, 셀) (폐기하기 위해 collectionView을 일으키는 해당 항목에 대해 하위보기가 없음). 버려진 셀은 다시 사용할 수 있도록 대기열에 놓입니다. 다시 클릭하면 똑같은 일이 발생합니다. 그러나 이번에는 원래 삭제 된 셀 (subView가 있음)이 다시 사용되어 표시됩니다.

개인적으로, 나는 이런 식으로 셀에 하위 뷰를 추가하는 것을 피할 것입니다. 사용자 정의 셀 클래스에 "영구적 인"UIView 속성을 추가하여 didSelectItemAtIndexPath에서 사용할 수 있습니다. 하지만 재설정하려면 cellForItemAtIndexPath에 넣어야합니다 (예 : if (indexPath isEqual:selectedIndexPath) { create/show the subview } else { hide the subview/set to nil) }.

).
관련 문제