2017-12-21 13 views
0

私はcollectionviewの画像をtableview内に表示しようとしています。collectionviewの画像をテーブルビュー内に表示する

私はそう

//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 

のようなコードを実装しかし、私はこれらの細胞のいずれかを選択した場合、私はそれを実行した場合、シミュレータは、このenter image description here

のように見える、コンポーネントがcollectionviewのImageViewのを除いて出てきます。セルが選択されていない場合、シミュレータは「Really fun」と表示されているセルのように見えます。誰にどのようにこれを修正するための任意のアイデアがありますか?

+0

Shiftキーを押しながらCommandキーを押しながら4を押して、目的のエリアの周りにボックスをドラッグすると、画面の一部のスクリーンショットを撮ることができます。それは写真よりも綺麗に見えます。 :-) https://support.apple.com/en-us/HT201361 – stone

+0

セルカスタムハイライト:https://stackoverflow.com/a/31512042/2450755セルカスタム選択:https://stackoverflow.com/a/ 27475774/2450755 –

+0

石ありがとうございます。私は次回にそれをやろう! – Daibaku

答えて

0

これはコードを制限しないことです。だから、私が適切に制約を与えた後、それはうまくいった。

関連する問題