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

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

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

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

Q&A

解決済

1回答

964閲覧

CollectionViewの実装の仕方がわかりません。

RumiaCamellia

総合スコア5

Swift

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

0グッド

0クリップ

投稿2020/08/06 03:28

前提・実現したいこと

collectionViewで画像を表示させたいです。

https://i-app-tec.com/ios/collectionview.html
こちらのサイトを参考にしてcollectionViewを実装しようとしたのですが、うまくいきません。他のサイトを調べてみたところ、SecondViewController?別のファイルにメゾッドを書く必要があるといったような情報もあり、混乱しています。
この参考にしたサイトではimageViewやlabelのOutletが無いと思ったのですが、タグをつけることで解決しているのでしょうか?
画像は全部で4つ、2xのところにそれぞれ配置しています。
イメージ説明
疑問がたくさんあり、申し訳ありません。めちゃくちゃな質問かもしれませんが、どなたか分かる方がいましたら、よろしくお願いします。

発生している問題・エラーメッセージ

Thread 1: Exception: "-[TimerBotton.ViewController collectionView:numberOfItemsInSection:]: unrecognized selector sent to instance 0x7fa672408540"

該当のソースコード

swift

1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var collection: UICollectionView! 6 7 // サムネイル画像の名前 8 let photos = ["1x", "2x","3x","4x"] 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 } 13 14 func collectionView(_ collectionView: UICollectionView, 15 cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{ 16 17 // "Cell" はストーリーボードで設定したセルのID 18 let testCell:UICollectionViewCell = 19 collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", 20 for: indexPath) 21 22 // Tag番号を使ってImageViewのインスタンス生成 23 let imageView = testCell.contentView.viewWithTag(1) as! UIImageView 24 // 画像配列の番号で指定された要素の名前の画像をUIImageとする 25 let cellImage = UIImage(named: photos[indexPath.row]) 26 // UIImageをUIImageViewのimageとして設定 27 imageView.image = cellImage 28 29 // Tag番号を使ってLabelのインスタンス生成 30 let label = testCell.contentView.viewWithTag(2) as! UILabel 31 label.text = photos[indexPath.row] 32 33 return testCell 34 } 35 36 func numberOfSections(in collectionView: UICollectionView) -> Int { 37 // section数は1つ 38 return 1 39 } 40 41 func collectionView(_ collectionView: UICollectionView, 42 numberOfItemsInSection section: Int) -> Int { 43 // 要素数を入れる、要素以上の数字を入れると表示でエラーとなる 44 return photos.count; 45 } 46} 47

試したこと

ほかのサイトを参考にして、別のファイルにメゾッドを書いたりしたのですがうまくいきませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

dataSource として使用するクラスの設定漏れだと思います。

Swift

1class ViewController: UIViewController {

ではなくて、

Swift

1class ViewController: UIViewController, UICollectionViewDataSource {

という具合に設定すれば実行時エラーはなくなると思います(参考にされている記事でもそのように記述してありますのでご確認ください)。

また、この後コードを変えていくにあたって、delegate の設定も必要になりますが、それも同じような感じとなります。

投稿2020/08/06 03:53

TsukubaDepot

総合スコア5086

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

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

RumiaCamellia

2020/08/06 06:19

今回もありがとうございます。わたしの確認不足でした。おっしゃる通り変更したら画像が全て一部だけ表示されるようになったので、調整します。とりあえず表示できるようになってよかったです。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問