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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift

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

Q&A

解決済

1回答

860閲覧

Swift collectionView Tag 設定 クラッシュ エラー

vitaminC

総合スコア41

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift

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

0グッド

0クリップ

投稿2022/08/03 10:07

編集2022/08/03 10:39

前提

CollectionViewのcellにImageを配置したいです。
imageViewにTag2を設定しているのですが、画面遷移の際にクラッシュしてしまう。

エラーはviewWithTagのところで出ています。
Tagの紐付け(?)ができていなくnilになっているのかと思うのですが、storyboardを見てもTagは設定されているので、どこを直したらいいかわかりません。

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

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

該当のソースコード

swift

1class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout { 2@IBOutlet var collectionView: UICollectionView! 3 let Items = ["item1", "item2", "item3" ] 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 collectionView.delegate = self 8 collectionView.dataSource = self 9 } 10 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 11 return Items.count // 表示するセルの数 12 } 13 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 14 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) 15 cell.backgroundColor = .white 16 let Imagecell = cell.contentView.viewWithTag(2) as! UIImageView 17//エラーメッセージ viewWithTag 18 Imagecell.image = UIImage(named: Items[indexPath.row]) 19 20 return cell 21 } 22 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 23 let horizontalSpace : CGFloat = 20 24 //self.view.bounds.widthデバイスのサイズ 25 let cellSize : CGFloat = self.collectionView.bounds.width / 6 - horizontalSpace*2 26 return CGSize(width: cellSize, height: cellSize) 27 } 28} 29 30 31 32 33

イメージ説明

追記

dump(cell.contentView.viewWithTag(2))   →nil
contentViewにTagが設定されていないか確認 →Tag0

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

hoshi-takanori

2022/08/03 10:13

その image view は cell の中にありますか?
vitaminC

2022/08/03 10:22

入っているかと思います。 View > Collection View > Cell > Content View > Image View という感じになっています!
TakeOne

2022/08/03 12:14

そのUIImageViewを貼り付けているセルのReuse Identifierに「Cell」と設定されていますか? 別のセルのReuse Identifierが「Cell」になっていることはないですか? コードは問題なさそうだなと思って、コピペしてそれに合うようにStorybpardを設定したら普通に動作したので、Storyboardの内容がこのコードに合っていないのだと思います。解決しないなら、CollectionViewとその中で使用しているセルの様子がわかるStoryboardのスクリーンショットを示して質問した方が良いと思います。
TakeOne

2022/08/03 12:16

すみません。コメントを書いている間に解決したようですね。上記のコメントは無視してください。
vitaminC

2022/08/03 20:03

TakeOne様 まさしくその通りでした。回答いただきありがとうございました。
guest

回答1

0

自己解決

CellのIdentifierが同じ名称のcollectionViewを置いてしまっていたので、それを削除したら治りました。

投稿2022/08/03 11:55

vitaminC

総合スコア41

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問