解決済み

iOSでCollectionViewが表示されない

  • 困ってます
  • 質問No.7972785
  • 閲覧数2104
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 92% (13/14)

iOS開発初心者です。

Xcode 4.6にてstoryboard内にCollection Viewを設置したのですが、シミュレーターで実行するとその部分が真っ黒になり、何も表示されません。
その他の要素は問題なく表示されます。

表示するには何か設定が必要なのでしょうか?
詳しい方、お願いします。

質問者が選んだベストアンサー

  • 回答No.1

ただ配置しても、何をどういう形で表示するかがわからないと何も表示されません。

CollectionViewは私もまだまともに使ったこと無いんですが、UITableViewと同様にDataSourceに表示データをバインドして表示するようですね。デリゲート及び表示用のビューの用意などが必要のようです。自由度が高い分、それなりに面倒くさいみたいですね。

とりあえず本家のドキュメントにざっと目を通したほうがいいでしょう(下のURL参照)。16ページあたりからデリゲートの設計について説明してあります。

https://developer.apple.com/jp/devcenter/ios/library/documentation/CollectionViewPGforIOS.pdf
お礼コメント
shiren2

お礼率 92% (13/14)

GUIで要素を配置したのですが、その方法では実際には表示されないということでしょうか?
構造がわかっていないので、検討違いをしているかもしれません…。

まずは資料に目を通してみます。
ありがとうございます。
投稿日時 - 2013-03-04 14:07:33

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 64% (9/14)

不完全情報なので、的確な回答は難しいですが。

1)UICollectionViewControllerを、storyboardに、ひっぱってきて、UICollectionViewが作られた場合は、
Data Sourceの記述がされてないなら、真っ黒けの表示は出るでしょう。CollectionViewのDataSourceは、そのコントローラになってますから、対応するプロトコルメソッドは、ダミーか、未実装のどちらかです。あなたが、オーバーライドしないかぎり。

2)storyboardに、UICollectionViewをドラッグして入れ込んだ場合は、UICollectionViewのData Sourceは、誰かが設定してやらなければ、nilです。nilに対しては、どんなメソッドコールをしても、no operationなので、なにもないのと同じです。つまり、セルの数ゼロ、セルサイズなし、とUICollectionViewは認識しているのじゃないでしょうか。
 
 いずれにせよdelegateなり、DataSourceなりを、ちゃんとstoryboardの実体に合わせてやらないと、まともな表示にはならないし、イベントをハンドリングすることも出来ないでしょう。

 delegateとDataSourceがわからない人が多いですが、delegateとdataSourceは、ピッチャーとキャッチャーのボールの投げ合いです。ピッチャーからキャッチャーへの球がDataSourceのプロトコル。キャッチャーからピッチャーへの球がdelegateのプロトコル。あなたが、キャッチャー。DataSourceがなければ、どこから球が来るのかわからない。delegateがなければ、どこへ球を返すのかわからない。
お礼コメント
shiren2

お礼率 92% (13/14)

詳しい説明ありがとうございます。
資料を見て理解出来たのですが、どうやらGUIで設定できるのはコレクションビューとレイアウトオブジェクトだけで、データソースオブジェクトは手書きしなければならないようですね。

GUIでデータソースオブジェクトを配置しているつもりが、実際にはレイアウトオブジェクトを弄っていたというのが原因だったようです。
その辺りが理解出来てませんでした。
投稿日時 - 2013-03-07 23:47:23
  • 回答No.2

ベストアンサー率 64% (9/14)

UITableView:UICollectionView
UITableViewController:UICollectionViewController
UITableViewCell:UICollectionViewCell

の関係がなりたちます。つまり、TableViewの時と同じように、DataSource で、セルを返してやらないといけません。

 ただ、置いただけでは、ここは、CollectionViewの表示領域です、ということが示されただけで、中身(UICollectionViewCell)の数や大きさは、いっさいないわけですから、真っ白けか、真っ黒けの表示を出すのは、極めて妥当なインプリメントでしょう。
補足コメント
shiren2

お礼率 92% (13/14)

説明が足りず申し訳ありません。
CollectionViewに複数のCollectionViewCellを設置して、その中にボタンを置いて電卓風にしています。
storyboardの段階では正しく表示されるのですが、シミュレータで実行するとCollectionView以下が真っ黒、という状態です。

ViewCellは設置済みですし、数や配置も自動で計算されていますが、真っ黒です。
よろしくお願いします。
投稿日時 - 2013-03-04 13:51:31
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ