因此,我有一个用户帖子供稿。用户可以在这些帖子上发表评论。我想在Feed上预览一些评论。 Facebook的应用程序可以做到这一点。我正在将这些预览的注释加载到表视图中,并且注释本身是API返回的供稿的json对象的一部分,因此它是初始请求的一部分。
以下是我正在调用的供稿中单元格的自定义初始化:
convenience init(style: UITableViewCellStyle, reuseIdentifier: String?, post: FeedContentPost, review: ReviewInfo?, isCommunity: Bool = false) {
self.init(style: style, reuseIdentifier: reuseIdentifier)
comments = post.comments
configureFor(post: post, review: review, isCommunity: isCommunity)
}
在我的帖子表格视图中,帖子单元格通过行单元格以以下方式加载:
switch post.type {
case let .user(up):
var cell: UserPostModCell = tableView.dequeueReusableCell(withIdentifier: "UserPostModCell") as! UserPostModCell
cell = UserPostModCell.init(style: .default, reuseIdentifier: "UserPostModCell", post: up, review: post.review, isCommunity: true)
cell.delegate = self
return cell
称为init的init是以前显示的init。
在便捷初始化中调用self.init的同时,将commentTableView设置为这样(使用SnapKit约束):
commentTableView.snp.makeConstraints({ make in
make.left.right.equalToSuperview()
make.top.equalTo(engagementButtons.snp.bottom)
make.bottom.equalTo(buttons.snp.top)
})
commentTableView.dataSource = self
commentTableView.delegate = self
commentTableView.backgroundColor = UIColor.white
commentTableView.separatorStyle = .none
commentTableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
commentTableView.register(PostCommentCell.self)
如您所见,正在设置委托和数据源。这是我在以下位置的行高:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let BASE_HEIGHT: CGFloat = 40
var calculatedHeight:CGFloat = BASE_HEIGHT
let comment = self.comments[indexPath.row]
//Add height for link
if comment.link != nil {
calculatedHeight += 82
}
let constrainedWidth = (self.commentTableView.frame.width - 42)
//Add Height for gif/image
if comment.media != nil || comment.gif != nil {
let ratio: CGFloat? = comment.media?.ratio ?? comment.gif?.ratio
if let ratio = ratio {
calculatedHeight += constrainedWidth / ratio
}else{
calculatedHeight += 214
}
}
calculatedHeight += comment.text.height(withConstrainedWidth: constrainedWidth, font: UIFont.commentFont(ofSize: 14))
print("CalculatedHeight: \(calculatedHeight)")
return calculatedHeight
}
然而,这导致的结果是行的高度不称为AT ALL。 如果可能,1)如何获得要调用的行的高度或更好的事件2)像这样在UITableViewCell内呈现tableview的更好方法是什么?