2017-04-25 7 views
0

사용자 지정 CollectionView 셀로 사용자 지정 컬렉션보기를 구현 중입니다.사용자 지정 CollectionViewCell 속성이 없음

다음은 CollectionView를 구현 한 것입니다.

- (void)setUpCollectionView{ 
    [self.view setNeedsLayout]; 
    [self.view layoutIfNeeded]; 

    [self.vwCarCollection setDataSource:self]; 
    [self.vwCarCollection setDelegate:self]; 

    [self.vwCarCollection registerClass:[FindMyCarCell class] forCellWithReuseIdentifier:@"FindMyCarCell"]; 
    [self.vwCarCollection setBackgroundColor:[UIColor redColor]]; 

    [self.vwCarCollection reloadData]; 
    [self.vwCarCollection reloadInputViews]; 
} 

"ViewDidLoad"에서이 함수를 호출했습니다.

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 
    FindMyCarCell *cell = (FindMyCarCell *)[self.vwCarCollection dequeueReusableCellWithReuseIdentifier:@"FindMyCarCell" forIndexPath:indexPath]; 
    cell.vwImgMain.image = [UIImage imageNamed:@"sample_car"]; 
    cell.lblCarNo.text = @"GH2334343"; 
    return cell; 
} 

내 코드를 디버깅, 세포 인스턴스가 여기

이 UICollectionViewDataSource 내 구현이

<FindMyCarCell: 0x78645b30; baseClass = UICollectionViewCell; frame = (302 50; 221 180); layer = <CALayer: 0x786a07a0>> 

같은 존재하지만 내 사용자 지정 셀의 이미지 뷰를 업데이트하려고 할 때, 그것을 그냥 내 이미지보기가 없다는 것을 반환합니다. 내 구현이 잘못되었습니다. 누구든지 나를 제안 할 수 있을까? 감사.

+0

FindMyCarCell * cell = (FindMyCarCell *) [self.vwCarCollection dequeueReusableCellWithReuseIdentifier : @ "FindMyCarCell"forIndexPath : indexPath]; self.vwCarCollection을 collectionView로 대체 한 다음 – ajjjjjjjj

+0

'FindMyCarCell'에'vwImgMain'을 만드는 방법을 보여줄 수 있습니까? – nynohu

+0

듣기 좋은 튜토리얼이 있지만 신속하지만 개념은 obj-c와 유사합니다. http://randexdev.com/2014/08/uicollectionviewcell/ –

답변

0

이미지 뷰를 셀에 추가 할 때 오류가있을 수 있습니다. Storyboard에서 셀을 만든 경우 viewDidLoad에 셀 클래스를 등록하지 마십시오. 대신 Storyboard에서 재사용 식별자를 설정하고 사용자 정의 콜렉션 뷰 셀 클래스의 프레임 메소드를 사용하여 이미지 뷰를 init에 추가하십시오.

0

viewDidApppear으로 문의하십시오. 당신이 XIB 파일을 사용하는 경우

[self.vwCarCollection registerClass:[FindMyCarCell class] forCellWithReuseIdentifier:@"FindMyCarCell"]; 
+0

커스텀 셀에 별도의 xib를 사용했습니다. –

+1

그래서'registerClass'가 아니라'registerNib'를 사용해야합니다. – nynohu

+0

xib에서 reuseIdentifier를 확인 했습니까? – KKRocks

0

, 그 이유는 당신이 registerClass를 호출 할 때입니다, 당신의 FindMyCarCellinitWithFrame를 호출하여 initiallized되며, 대신

[self.vwCarCollection registerClass:[FindMyCarCell class] forCellWithReuseIdentifier:@"FindMyCarCell"]; 

[self.vwCarCollection registerNib:[UInib nibWithNibName:@"FindMyCarCell" bundle:nil] forCellWithReuseIdentifier:@"FindMyCarCell"]; 

를 호출하면 이 방법으로 init을 구현하지 않았다. registerNib을 호출하면 FindMyCarCell의 스택 호출이 awakeFromNib을 호출하여 초기화됩니다 (따라서 imageView가 생성됩니다).