2017-01-11 1 views
0

신속한 작업이 가능하며 가로로 스크롤 할 수있는 사용자 정의 UiCollectionView를 만들려고합니다. 버튼을 탭하면 카메라 롤의 이미지를 배열에 추가 할 수 있습니다 컬렉션보기에서 이미지 수 이것은 내가 지금까지 가지고있는 것이고 나는 몇 가지 문제를 겪었다. 온라인으로 동영상을 보려고했지만 오류가 발생하여 내가 무엇을 잘못하고 있는지 알지 못합니다. 내 자산 폴더에로드 된 애플 제품의 일부 이미지가 있으며 컬렉션 뷰의 배열에 해당 이미지가 사용됩니다. 각 이미지는 하나의 colletionViewCell에 있습니다. 그것은 여기 나에게 cell.ourImage?.image = self.imageArray[indexPath.row]를 오류를 제공하고 "값 유형 UICollectionViewCell 더 회원이 없습니다 'ourImage'"라고 말한다 나는 다른 UICollectionViewCell 신속한 파일에 콘센트 ourImage 이름에도 불구하고Swift 3의 사용자 정의 UICollectionView가 작동하지 않습니다.

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate { 

    @IBOutlet weak var collectionView: UICollectionView! 

    let imageArray = [UIImage(named: "appleWatch"), UIImage(named: "iPhone"), UIImage(named: "iPad"), UIImage(named: "iPod"), UIImage(named: "macBook")] 


    func numberOfSections(in collectionView: UICollectionView) -> Int { 

     return 1 

    } 


    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

     return self.imageArray.count 


    } 


    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! UICollectionViewCell 


     cell.ourImage?.image = self.imageArray[indexPath.row] 

     return cell 

    } 
} 

. Main.storyboard를 확인했는데 모든 클래스를 올바르게 명명하고 collectionViewCell 및 식별자에 할당했다고 생각합니다. 이 줄을 삭제하고 잘 컴파일하지만 응용 프로그램이 실행될 때마다 화면에 아무 것도 나타나지 않으므로 내 이미지에도 문제가있을 수 있습니다. 아무도 아이디어가 있니? 커스텀 UiCollection View를 만드는 방법은 무엇입니까? 나는 올바른 생각을 가지고 있습니까?

+0

콜렉션 뷰 셀 클래스 이름은 무엇입니까? –

+1

이것은 다음과 같습니다. UICollectionViewCell'은'UICollectionViewCell'에 정의 된 객체의 부분만을 사용하도록 컴파일러에 지시합니다. 당신은 정말로'cell'을 커스텀 클래스의 인스턴스로 취급하도록 말하고 싶습니다. –

+0

사용자 정의 셀 이름을 UICollectionViewCell에서 다른 사용자 정의 이름으로 변경하십시오. –

답변

2

대기열 해제 된 셀을 UICollectionViewCell으로 전송하는 대신 맞춤형 UICollectionViewCell 하위 클래스로 처리해야합니다.

if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "YourReuseIdentifier", for: indexPath) as? YourCustomCollectionViewCell { 
    // set the cell's custom properties 
} 

또한 as! YourCustomCollectionViewCell를 사용하여 캐스트를 강제 할 수 있지만, 나는 개인적으로이 작업을 수행하지 않으려는.

+0

고맙습니다. 그것은 효과가있다! –

관련 문제