2012-11-06 5 views
4

최근에 스토리 보드에 UICollectionView를 추가했는데, 현재 다른 뷰에서 뷰에 푸시되었습니다. 그러나 스토리 보드 에디터를 사용하여보기 좋게 작동합니다 좋아,하지만 내가 애플 리케이션을 실행할 때 세포가 보이지 않습니다. 일부 셀은 내부에 UIButton을 가지고 있으며 렌더링되지 않습니다.UICollectionView 셀이 보이지 않습니다.

뷰를 두 번 확인하려면 렌더링에서 배경색을 변경하고 다시 실행했는데 색상이 올바르게 업데이트되었습니다. 에디터에서 설정 되었다면 델리게이트 코드를 실행하지 않고 설정에서 자동으로 셀을 렌더링해야한다고 가정하는 것이 맞습니까?

도움을 주시면 감사하겠습니다.

감사

EDIT ---- 난 후 collectionview 컨트롤러를 가지고하는 SEGUE 밀어 내 두 번째보기 컨트롤러에 적절한 위임 방법을 구현 좋아, 또한 추가

내 초로 그러나 나는, 나 또한 스토리 보드에있는 셀의 식별자가 quickNoteCell을 사용하는지 만든

// number of sections for the view 
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{ 
    return 1; 
} 

// numbers of items in section 
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ 
    return 1; 
} 

// cell to return (uses the custom identifier of the cell in the storyboard) 
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"quickNoteCell" forIndexPath:indexPath]; 
    return cell; 
} 

, 파랑에 기본 색상을 변경 : 뷰 컨트롤러 헤더 파일과하는 .m 파일에 다음 코드를 추가 성 세포에 어떤 생각이 보이지 않니?

답변

1

제이 (Jay)가 말했듯이이 줄을 @interface 아래에두면 제대로 작동합니다. 게시 한 코드에는 아무 것도 없습니다. 당신이 viewDidLoad:에 다음 줄을 추가 된 UICollectionViewController 서브 클래스를 생성했기 때문에

<UICollectionViewDelegate, UICollectionViewDataSource> 
0

UICollectionViewDelegate 및 UICollectionViewDataSource 프로토콜을 구현 했습니까?

collectionView : cellForItemAtIndexPath : 호출 중입니까?

+0

위임 프로토콜에 코드를 추가하지 않았지만 스토리 보드에 셀이 설정되어 있고 그 안에 항목이있는 경우 (예 : UIButton)은 코드를 처리 할 필요없이 철저히 렌더링해야합니다. 오늘 밤 대표단 프로토콜을 살펴보고 피드백을 보내 주시면 감사하겠습니다. – SmokersCough

+0

원래 게시글에 내 코드에 변경 사항을 추가했는데 왜 셀이 여전히 표시되지 않는지 잘 모르겠습니다. – SmokersCough

9

하기는 세포를 볼 수 없습니다. 내 이해에서, 이것은 autolayout을 사용할 때 크기 0,0으로 압축되는 빈 셀을 생성합니다.

사용자 정의 collectionViewItems를 사용하는 경우가 눈에 보이지 않는 UICollectionViewCells

// Register cell classes 
    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier]; 
0

대신 스토리 보드에 정의 된 세포를 볼이 라인을 삭제하고 당신은 nib 파일의 데이터가 collectionView 먼저 펜촉을 등록로드 할 :

let nib = UINib(nibName: reuseIdentifier, bundle: Bundle.main); 
self.collectionView?.register(nib, forCellWithReuseIdentifier: reuseIdentifier); 

및 수집 뷰 위임에

은 전화 :

collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) 
관련 문제