Отображать изображения на виде в виде внутри таблицы

Daibaku спросил: 26 ноября 2017 в 05:09 в: swift

Я пытаюсь отобразить изображения в виде коллекции внутри табличного представления.

Я реализовал такие коды так

 //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 UIKitclass 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
    }
}//classextension 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 UIKitclass 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 Firebaseclass 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

Но если я запустил его, симулятор будет выглядеть так

Если я выбрал одну из этих ячеек, компоненты будут отображаться, кроме изображения в представлении коллекции. Если ячейка не выбрана, симулятор выглядит как ячейка с надписью "Действительно весело". У кого-нибудь есть идеи, как это исправить?

0 ответов