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

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

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

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

Swift

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

解決済

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

vitaminC
vitaminC

総合スコア35

Xcode 7

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

Swift

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

1回答

0リアクション

0クリップ

185閲覧

投稿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

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout { @IBOutlet var collectionView: UICollectionView! let Items = ["item1", "item2", "item3" ] override func viewDidLoad() { super.viewDidLoad() collectionView.delegate = self collectionView.dataSource = self } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return Items.count // 表示するセルの数 } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) cell.backgroundColor = .white let Imagecell = cell.contentView.viewWithTag(2) as! UIImageView //エラーメッセージ viewWithTag Imagecell.image = UIImage(named: Items[indexPath.row]) return cell } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let horizontalSpace : CGFloat = 20 //self.view.bounds.widthデバイスのサイズ let cellSize : CGFloat = self.collectionView.bounds.width / 6 - horizontalSpace*2 return CGSize(width: cellSize, height: cellSize) } }

イメージ説明

追記

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

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

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

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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様 まさしくその通りでした。回答いただきありがとうございました。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Xcode 7

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

Swift

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