Programing

'UICollectionViewCell'유형의 값을 캐스팅 할 수 없습니다.

lottogame 2021. 1. 9. 09:16
반응형

'UICollectionViewCell'유형의 값을 캐스팅 할 수 없습니다.


스토리 보드에서 사용자 지정 CollectionViewCell을 사용합니다. 앱을 시작하면 다음 메시지가 표시됩니다.

'UICollectionViewCell'유형의 값을 TestProject.CollectionViewCell로 캐스팅 할 수 없습니다.


Xcode의 CollectionViewController에 대한 템플릿은 viewDidLoad의이 코드 줄과 함께 제공되며 스토리 보드의 사양을 변경합니다.

// Register cell classes
self.collectionView!.register(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

해당 줄을 삭제하면됩니다.

이전 Swift 버전에서 라인은 다음과 같습니다.

// Register cell classes
self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

UICollectionViewCell 클래스에 viewDidLoad()내 셀을 등록 했기 때문에이 문제에 직면했습니다 . 내에서 사용 CustomSubcalssCollectionViewCell dequeueReusableCell합니다.cellForItemAtIndexPath

registerClassdequeueReusableCell 이 동일한 클래스 인지 확인 하여 문제를 해결하십시오.

self.registerClass(SomeUICollectionCellClass.self, forCellWithReuseIdentifier: reuseIdentifier)

let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! SomeUICollectionCellClass

사용자 지정 클래스 (Xcode 검사기)에 TestProject.CollectionViewCell에 대한 사용자 지정 클래스가 아닌 기본 UICollectionViewCell로 설정된 클래스가있을 때이 오류가 발생했습니다.

이를 수정하려면 사용자 정의 클래스를 구현으로 변경하면됩니다.

커스텀 클래스 섹션

문서 개요


ViewController내 단위 테스트에서 Storyboard에서 인스턴스화 할 때이 오류가 발생했습니다 .

storyboard.instantiateViewControllerWithIdentifier("someVC") as! MyViewController

문제는 Identity inspector의 특정 모듈을 Storyboard의 해당 VC에 할당했다는 것입니다. 나는 그것을 제거하여 실행 중에는 응용 프로그램 모듈 인 현재 모듈과 테스트 중에는 테스트 모듈을 기본값으로 사용합니다.


 self.collectionView!
     .register(MyCollectionViewCell.self, 
               forCellWithReuseIdentifier: reuseIdentifier
              )

이 줄을 삭제할 필요가 없습니다. UICollectionViewCell.self코드를 사용하여 클래스를 등록하려면에서 상속받은 자신의 셀 클래스 를 등록합니다.


Storyboard와 코드 모두에서 셀 클래스를 등록하면이 오류가 발생합니다. 둘 중 하나만 선택하면 문제가 사라집니다.

Apple이 템플릿에이 코드를 포함하지 않았 으면합니다.

self.registerClass(SomeUICollectionCellClass.self, forCellWithReuseIdentifier: reuseIdentifier)

특히 항상 Storyboard를 통해 셀 등록을 권장하기 때문에. 상황을 매우 혼란스럽게 만듭니다.

참조 URL : https://stackoverflow.com/questions/32166364/could-not-cast-value-of-type-uicollectionviewcell

반응형