大家好,所以我最近在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个链接..所以我不能显示图片 我在日志中没有错误
我试图找到与此相关的问题,但实际上找不到多少。
先谢谢 雅利安
答案 0 :(得分:1)
尝试而不是实施estimatedHeightForRowAtIndexPath
,实施heightForRowAtIndexPath
。