質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

Q&A

解決済

1回答

3091閲覧

[Swift]UICollectionViewのカスタマイズ

RioNishino

総合スコア36

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

0グッド

0クリップ

投稿2015/05/25 09:56

UICollectionViewで様々な形のリストを作りたいと考えています。
SmartNewsのようなUIを想像してもらえると分かりやすいと思います。

現在、UICollectionViewCellを継承したクラスを作り、それをViewControllerのセルを生成するところで利用しているという構成になっています。説明では分かりにくいと思うので、以下のコードを見ていただけると助かります。

lang

1// CollectionCell.swift 2 3class CollectionCell: UICollectionViewCell { 4 5 override init(frame: CGRect) { 6 super.init(frame: frame) 7 8 // テキストの位置を指定 9 var textLabel = UILabel() 10 11 // 画像のサイズや位置を指定 12 var imageView = UIImageView() 13 14 self.contentView.addSubview(textLabel) 15 self.contentView.addSubview(imageView 16 } 17 18}

lang

1// ViewController.swift 2 3func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 4 5 let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CollectionCell 6 7 return cell

色々を省略していますが、上記のような感じです。
今のままですと、すべてが同じ形になってしまいます。

部分的に異なる表示をしたいのです。
例えば、一つ目は画像を表示せず文字だけを表示したり、四つ目を画像だけ表示など。

何か方法をご存知の方は、ご教示ください。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記のメソッドはセルの数だけ繰り替えし実行されます。

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { }

引数のindexPathから

indexPath.row

で何個目のセルかという情報が入ってます。

なのでこんな感じでにしてやればOKと思います。

lang

1 func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 2 3 let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! UICollectionViewCell 4 5 switch indexPath.row { 6 case 1: 7 // Labelだけのcellの設定 8 case 4: 9 // 画像だけのcellの設定 10 default: 11 // 通常のcellの設定 12 } 13 return cell 14 }

投稿2015/05/25 16:57

jollyjoester

総合スコア1585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RioNishino

2015/05/26 00:04

またまたご回答ありがとうございます。 解決できました。 すごくわかりやすい説明で勉強になりました。 感謝申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問