UITableView返回奇怪的大小

时间:2016-03-08 20:37:16

标签: ios swift uitableview

大家好,所以我最近在iOS上处理过UITableViews。我的UITableView返回一些奇怪的结果..

要显示的部分照片

Then The first cell is so big.

Then the 2nd Cell looks like this

这些细胞的大小各不相同。

这个类的代码就是这个

 import UIKit
    import FLAnimatedImage

    class ShotDetailTableViewController: UITableViewController {


      @IBOutlet weak var bgImageView: FLAnimatedImageView!

        @IBOutlet weak var viewsCount: UILabel!
        @IBOutlet weak var likesCount: UILabel!
        @IBOutlet weak var commentsCount: UILabel!

        @IBOutlet weak var avatarImageView: UIImageView!
        @IBOutlet weak var usernameLabel: UILabel!
        @IBOutlet weak var descriptionLabel: UILabel!

        @IBOutlet weak var reboundCount: UILabel!
        @IBOutlet weak var attachmentCount: UILabel!

        @IBOutlet weak var tagsCollectionView: UICollectionView!
        @IBOutlet weak var reboundCollectionView: UICollectionView!
        @IBOutlet weak var attachmentCollectionView: UICollectionView!

        @IBOutlet weak var commentTableView: UITableView!

        var shots : [Shot] = [Shot]()
        var comments : [Comment] = [Comment]()
        var shot : Shot!

        var reboundPages = 1
        var attachmentPages = 1

        override func viewDidLoad() {
            super.viewDidLoad()

            title = shot.title

            bgImageView.sd_setImageWithURL(NSURL(string: shot.imageUrl), placeholderImage: UIImage(named: "1"), options: .ContinueInBackground)

            viewsCount.text = "\(shot.viewsCount)"
            likesCount.text = "\(shot.likesCount)"
            commentsCount.text = "\(shot.commentCount)"

            avatarImageView.sd_setImageWithURL(NSURL(string: shot.user.avatarUrl), placeholderImage: UIImage(named: "2"))

            usernameLabel.text = "\(shot.user.username)"
            descriptionLabel.text = "\(shot.description)"

            reboundCount.text = "\(shot.reboundCount)"
            attachmentCount.text = "\(shot.attachmentsCount)"

            commentTableView.delegate = self
            commentTableView.dataSource = self
            commentTableView.estimatedRowHeight = 100.0;
            commentTableView.rowHeight = UITableViewAutomaticDimension;
            commentTableView.separatorStyle = UITableViewCellSeparatorStyle.None

            let api = DribbleObjectHandler()
           api.loadComments(shot.commentsUrl, completion:didLoadComments)

          NSUserDefaults.standardUserDefaults().setValue(true, forKey: "_UIConstraintBasedLayoutLogUnsatisfiable")
        }


   override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        if tableView == commentTableView {
         return UITableViewAutomaticDimension
        } else {
         return UITableViewAutomaticDimension
        }
    }

       override func viewWillAppear(animated: Bool) {
         super.viewWillAppear(animated)
            avatarImageView.clipsToBounds = true
            avatarImageView.layer.cornerRadius = 25

          self.commentTableView.reloadData()
        }

        func didLoadComments(comments : [Comment]){
          self.comments = comments
          self.commentTableView.reloadData()
        }

      // MARK: - Table view data source

      override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
            // #warning Incomplete implementation, return the number of sections
        if tableView == commentTableView {
          return 1
        } else {
          return 1
         }
        }

        override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            // #warning Incomplete implementation, return the number of rows
            if tableView == commentTableView {
              return comments.count
            } else {
            return super.tableView(tableView, numberOfRowsInSection: section)
            }
        }

        override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
            if tableView == commentTableView {
             let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! CommentCell

            // Configure the cell...
                let comment = comments[indexPath.row]

                //cell.nameLabel.text = comment.user.name
              //  cell.commentLabel.text = comment.body

                //cell.avatarImageView.sd_setImageWithURL(NSURL(string: comment.user.avatarUrl), placeholderImage: UIImage(named: "2"))
                cell.avatarImageView.image = UIImage(named: "2")

                return cell

            } else {
              let cell = super.tableView(tableView, cellForRowAtIndexPath: indexPath)
              return cell
          }
      }
      override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }

    }

当我实现heightForRowAtIndexPath时,tableView变得非常小 不幸的是,我不能放超过2个链接..所以我不能显示图片 我在日志中没有错误

我试图找到与此相关的问题,但实际上找不到多少。

先谢谢 雅利安

1 个答案:

答案 0 :(得分:1)

尝试而不是实施estimatedHeightForRowAtIndexPath,实施heightForRowAtIndexPath