【问题标题】:tableview row height is wrong in first row at first section before scrolling滚动前第一部分第一行的tableview行高错误
【发布时间】:2018-08-12 06:46:11
【问题描述】:

我正在生成包含 stackView 的单元格的 tableView。一切都很好,但是第一部分的第一行在滚动之前的高度错误。我正在使用cell.selectionStyle = .none,它在滚动之前在错误的单元格中选择为.default。如何解决?

DispatchQueue.main.async{
  self.tableView.setNeedsLayout()
  self.tableView.layoutSubviews()
  self.tableView.layoutIfNeeded()
  self.tableView.reloadData()
} 

^在viewDidLoad() 中。没影响

还尝试了 cell.layoutIfNeeded(),仍然没有。

单元格高度为 UITableViewAutomaticDimension

【问题讨论】:

  • 你能显示设置单元格高度的代码吗?
  • 您必须根据部分和单元格在 index 处的 heightForRow 中设置单元格的高度,然后您将获得所需的单元格高度
  • 你在使用自动布局吗?如果是,那么您应该使用 UITableViewAutomaticDimension 作为您的行高和估计的行高。如果您不使用 Autolayout,则应手动计算高度。
  • 抱歉,更新了问题
  • 不仅仅是身高问题。它也不接受 selectionStyle,所以还有一些其他问题

标签: ios swift uitableview


【解决方案1】:

了解UITableViewAutomaticDimension后,我实现了:

所有多行UILabel 必须在单元格重用之前具有指定值。可以通过在awakeFromNib() 方法中为单元格类中的每个 label.text 提供 nil 或只是空白字符串 ("") 值来轻松完成。

例子:

class HeaderTeacherTableViewCell: UITableViewCell {
    @IBOutlet weak var multilineLabel: UILabel!
    override func awakeFromNib() {
        super.awakeFromNib()
        multilineLabel.text = nil
    }
}

多行标签是指UILabel(),行数为0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 2019-12-17
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多