2017-01-11 3 views
0

私は新しく、あなたが水平にスクロールできるカスタムUiCollectionViewを作成しようとしています。ボタンをタップすると、カメラロールの画像を配列に追加できますコレクションビュー内の画像の数。これは私がこれまで持っていたものであり、私はいくつかの問題にぶつかりました。私はビデオをオンラインで見てみましたが、私はまだ間違いをしているので、何が間違っているのか分かりません。私は自分の資産フォルダに読み込まれたリンゴ製品の画像をいくつか持っており、それらの画像をcollectionView用の配列で使用します。各画像は1つのcolletionViewCellにあります。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 

    } 
} 

それは私にここでエラーcell.ourImage?.image = self.imageArray[indexPath.row]を与え、と言う「値型UICollectionViewCellは何のメンバーを持っていない 『ourImage』」私は別のUICollectionViewCell迅速ファイルのコンセントourImageという名前にもかかわらず。私はMain.storyboardをチェックして、私はすべてのクラスに正しく名前を付けて、それらをcollectionViewCellと識別子に割り当てたと思います。私はこの行を削除し、それは正常にコンパイルされますが、アプリが実行されるたびに画面上に何も表示されないので、画像にも何か問題がある可能性があります。誰にもアイデアはありますか?カスタムUiCollectionビューを作成するにはどうしたらいいですか?私は正しいアイデアを持っていますか?

+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

ありがとうございます。出来た! –

関連する問題