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

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

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

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Swift

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

Q&A

解決済

1回答

1610閲覧

uicollectionviewのcellにsdwebimageを使って画像を挿入した時に、最後のcellしか表示されない。

waterfall

総合スコア13

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Swift

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

0グッド

0クリップ

投稿2018/07/23 11:55

編集2018/07/23 12:08

uicollectionviewのcellにsdwebimageを使って画像を挿入した時に、最後のcellしか表示されないのですが、どうすれば全てのセルの画像を表示できますか。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { // アイテムを作成 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) ref = Database.database().reference() ref.child("users").child(userID!).child("store").observe(DataEventType.value, with: { (snapshot) in if let snap = snapshot.value as? [String : AnyObject] { print(self.store.count) if indexPath.item < self.store.count { self.result = snap[self.store[indexPath.item]] as? String var url = URL(string:self.result!) self.imageView1.sd_setImage(with:url) cell.backgroundView = self.imageView1 self.imageView1.sd_setImage(with: url, completed: { (_, error, _, _) in if error == nil { self.imageView1.layer.masksToBounds = true self.imageView1.layer.cornerRadius = self.imageView1.frame.size.width * 0.5 } }) } } }) return cell }

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

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

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

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

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

guest

回答1

0

ベストアンサー

おそらくself.imageView1を固定のまま持っており、cell.backgroundViewにそのまま入れてしまっているため
全て同一の場所を参照しにいくようになっており、self.imageView1の値が書き換わってしまうと他のcellも全てその画像が表示されている状態ではないでしょうか?

解決方法としてはカスタムセルを作成してcell自体にimageViewを持たせてそこでcell.imageView.sd_setImage(hogehoge)のようにする。
もしくはself.imageView1 = UIImageView.init()のようにして各セルごとに参照するUIImageViewオブジェクトを作ってやる必要があります。
私はtableViewやcollectionViewを使うときは前者のような作り方をすることが多いです。

カスタムセルの作り方については検索すると色々と載っていると思います。下記ご参考までに。
UICollectionViewのカスタムセルの作り方とセルの再利用について

投稿2018/07/24 05:10

razuma

総合スコア1313

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

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

waterfall

2018/07/24 08:05

後者の方法を実行することによって、理想通りに実装することができました。デタラメな質問に対して親切に回答して頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問