###Instagramのような、横に3つのUIControllerViewCellが並ぶCollectionViewを作っています
######問題点:エラーコードは出ないのですが、Cellが表示されません。
カラーは灰色にしているので表示されたら見えるようにしています。
また、IdentifierもCellに設定してます
おかしいところはないと思うのですが表示されずに悩んでいます
どなたか対処法がわかる方いましたら教えていただけると嬉しいです。
以下にコードを載せます
swift
1class MakeViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate,UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout { 2 3 @IBOutlet var cameraImageView: UIImageView! 4 @IBOutlet var filterButton : UIButton! 5 @IBOutlet var editButton : UIButton! 6 @IBOutlet var collectionView : UICollectionView! 7 8 //画像加工するための元となる画像 9 var originalImage: UIImage! 10 11 //画像加工するフィルターの宣言 12 var filter: CIFilter! 13 14 override func viewDidLoad() { 15 super.viewDidLoad() 16 //UICollectionViewFlowLayoutをインスタンス化 17 let layout = UICollectionViewFlowLayout() 18 layout.sectionInset = UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 15)//レイアウトを調整 19 collectionView.collectionViewLayout = layout 20 } 21 22 //表示するセルの数 23 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 24 //今回はセルを20個にしてみる 25 return 20 26 } 27 28 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 29 //表示するCellの登録 30 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) 31 //セルの背景色をgrayに 32 cell.backgroundColor = .gray 33 34 return cell 35 } 36 37 //セルの配置について決める 38 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 39 let horizontalSpace : CGFloat = 20 40 let cellSize : CGFloat = self.view.bounds.width / 3 - horizontalSpace 41 return CGSize(width: cellSize, height: cellSize) 42 } 43
提示されたコードで問題なく20個のセルが表示されるようですが、dataSource, delegate の設定は行っていますでしょうか(私はコード中に直接記入しました)。
@TsukubaDepot 様
ご返信いただきありがとうございます。
「dateSource, delegateの設定」というのは「Outletsからの接続」ということであっていますでしょうか?
見落としていたため、先ほど2つをCollectionViewと接続したのですがやはりCellが表示されません。
(私はコード中に直接記入しました)とあるのですが、直接記入する場合どのように記入すべきか教えていただくことは可能でしょうか?
StoryBoard上で接続したのであれば大抵大丈夫かと思いますが、コードベースであれば
collectionView.delegate = self
collectionView.dataSource = self
を viewDidLoad() 内に追記します。
また、collectionView()の各メソッド(delegate)内に
print(#function)
のように何らかの情報を表示する関数を入れ、必要なときに各メソッドが呼び出されているか確認してみるといいかと思います。
@TsukubaDepot 様
ご返信ありがとうございます
ViewDidLoad内に
collectionView.delegate = self
collectionView.dataSource = self
のコードを記入したところきちんとCellが表示されるようになりました!
私のCollectionViewについての理解が浅かったです、、アドバイスをくださり本当にありがとうございました
解決されたようでよかったです。
StoryBoardで行う際も
https://i-app-tec.com/ios/collectionview.html の「ViewController と CollectionView の紐付け」の通りなので、どこか手順が違っているだけかと思います。
解決したようであれば、このご質問が自己解決ということで閉じていただければと思います。
@TsukubaDepot様
リンクのページを視聴し、自分がViewControllerに繋げていなかったことに気づきました。
コードで解決する方法とStoryBoardで解決する方法の2通りを教えてくださり本当にありがとうございました、重ねてお礼申し上げます。
解決という形で閉じさせていただきます
回答1件
あなたの回答
tips
プレビュー