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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

417閲覧

Tableviewの中にあるCollectionviewに画像を表示させる。

Daibaku

総合スコア19

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2017/12/21 15:25

編集2017/12/21 15:28

現在、Tableviewの中にあるCollectionviewに画像を表示させるところで先に進めずにいます。
Storyboardはこのように配置しました。

イメージ説明

コードは以下です。

//Model import UIKit import Firebase struct Post { var key: String var Date: String var tweetImageUrl = [URL]() var Text: String init(snapshot: DataSnapshot) { self.key = snapshot.key self.Date = (snapshot.value as! NSDictionary)["Date"] as? String ?? "" self.Text = (snapshot.value as! NSDictionary)["Text"] as? String ?? "" if let urls = (snapshot.value as! NSDictionary)["tweetImageUrl"] as? [String:String] { for (_,value) in urls { if let finalUrl = URL(string: value) { tweetImageUrl.append(finalUrl) } } } } } //tableviewcell import UIKit class TimellineTableViewCell: UITableViewCell { @IBOutlet var profileImage: UIImageView! @IBOutlet var tempoName: UILabel! @IBOutlet var dateLabel: UILabel! @IBOutlet var caption: UILabel! @IBOutlet var collectionView: UICollectionView! var post: Post? { didSet { tempoName.text = "channing" dateLabel.text = post?.Date caption.text = post?.Text profileImage.image = #imageLiteral(resourceName: "heart") } } override func awakeFromNib() { super.awakeFromNib() collectionView.delegate = self collectionView.dataSource = self profileImage.layer.cornerRadius = 30.0 profileImage.layer.masksToBounds = true } }//class extension TimellineTableViewCell: UICollectionViewDelegate, UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { guard let count = post?.tweetImageUrl.count else { return 0 } return count } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "timeLineCell", for: indexPath) as! TimelineCollectionViewCell cell.configCell(post: post) return cell } }//extension //collectionviewcell import UIKit class TimelineCollectionViewCell: UICollectionViewCell { @IBOutlet var imageView: UIImageView! override func awakeFromNib() { super.awakeFromNib() } func configCell(post: Post?) { guard let imageUrl = post?.tweetImageUrl else { return } for url in imageUrl { URLSession.shared.dataTask(with: url, completionHandler: { (data, res, err) in guard let data = data else { return } let image = UIImage(data: data) DispatchQueue.main.async { self.imageView.image = image } }).resume() } } }//class //viewcontroller import UIKit import Firebase class TimelineViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet var TimelinetableView: UITableView! var ref: DatabaseReference! { return Database.database().reference() } let uid = Auth.auth().currentUser?.uid var tweets = [Post]() override func viewDidLoad() { super.viewDidLoad() self.TimelinetableView.rowHeight = UITableViewAutomaticDimension self.TimelinetableView.estimatedRowHeight = 300 fetchTweets() } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 300 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return tweets.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = TimelinetableView.dequeueReusableCell(withIdentifier: "tableCell", for: indexPath) as! TimellineTableViewCell cell.post = tweets[indexPath.row] return cell } func fetchTweets() { ref.child("TWEETS").child(uid!).observe(.value, with: { (snapshot) in var result = [Post]() for post in snapshot.children { let post = Post(snapshot: post as! DataSnapshot) result.append(post) } self.tweets = result.sorted(by: { (p1, p2) -> Bool in p1.Date > p2.Date }) self.TimelinetableView.reloadData() }, withCancel: nil) }//func }//class

Buildしてみると、imageViewに画像は表示されずTableviewcellだけ期待どうりに返ってくる状態です。
どなたか、解決方法のわかる方いらっしゃいますか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

まずは、
・configCellはコールされているのか?
・URLSession.shared.dataTaskのcompletionHandlerは動いているのか?
・実行時に、コンソールにエラーが表示されていないか?
など、何が動いていて何が動いていないのかを切り分けていくと良いかと思います。
あとはATSの設定なども確認してみるのも良いかと。

投稿2017/12/26 03:23

m_orishi

総合スコア68

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

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

Daibaku

2017/12/27 14:27

ご回答ありがとうございます。constrainを設定しなおすと期待どうりに動きました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問