質問編集履歴

1 ソースの修正

退会済みユーザー

退会済みユーザー

2017/02/08 22:59  投稿

UICollectionViewでindexPathごとに読み込むカスタムセル(xib)を切り分けたい
コレクションビューでindexPathごとに使用するカスタムセルを切り分けたいと考えております。
現在は、全てのindexPathで同じカスタムセル名でnibを作成し、reusecellとして登録しています。
作ろうとしているものがセルごとに画像やボタンの配置が違ったりするので、画面ごとにxibを作成して、使い分けたいです。
nibを複数登録し、セルのデータを返すメソッドでindexPathが0のときは・・・と分岐してみましたが、上手くいきませんでした。
そもそも目的を達成するためには、この方法ではないほうが良いのでしょうか?
```
let screenNames = ["screenName01","screenName02","screenName03".....]
   override func viewDidLoad() {
       super.viewDidLoad()
       // Do any additional setup after loading the view, typically from a nib.
       self.automaticallyAdjustsScrollViewInsets = false
       // セルのNibを登録
       self.collectionView!.register(UINib(nibName: "CollectionViewCell1", bundle: nil), forCellWithReuseIdentifier: "cell1")
       self.collectionView!.register(UINib(nibName: "CollectionViewCell2", bundle: nil), forCellWithReuseIdentifier: "cell2")
   }
(中略)
   //データを返す
   override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
   {
       let cell1: CollectionViewCell1 = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath as IndexPath) as! CollectionViewCell1
       let cell2: CollectionViewCell2 = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath as IndexPath) as! CollectionViewCell2
       let cell1: CollectionViewCell1 = collectionView.dequeueReusableCell(withReuseIdentifier: "cell1", for: indexPath as IndexPath) as! CollectionViewCell1
       let cell2: CollectionViewCell2 = collectionView.dequeueReusableCell(withReuseIdentifier: "cell2", for: indexPath as IndexPath) as! CollectionViewCell2
       
       if(indexPath.row == 0)
           cell1.mainImage.image = UIImage(named: screenNames[indexPath.row])
           return cell1
       } else {
           cell2.mainImage.image = UIImage(named: screenNames[indexPath.row])
           return cell2
       }
   }
```
  • Xcode

    6249 questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • Swift

    11014 questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る