自我调整大小的表格视图单元格不起作用

Posted

技术标签:

【中文标题】自我调整大小的表格视图单元格不起作用【英文标题】:Self Sizing Table View Cells isn't working 【发布时间】:2016-09-11 20:49:55 【问题描述】:

我将estimatedRowHeight 设置为常量,将rowHeight 设置为UITableViewAutomaticDimension,但表格视图单元格的大小仍未调整为单元格的detailTextLabel。我哪里错了?

override func viewDidLoad() 
    super.viewDidLoad()

    tableView.estimatedRowHeight = 130.0
    tableView.tableFooterView = UIView()
    tableView.separatorInset.left = 50
    tableView.registerClass(CommentCellView.self, forCellReuseIdentifier: cellid)
    tableView.rowHeight = UITableViewAutomaticDimension




override func viewDidAppear(animated: Bool) 
    tableView.reloadData()


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier(cellid, forIndexPath: indexPath) as! CommentCellView

    return cell


override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return 5



override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
    return 60.0

UITableViewCell 类:

class CommentCellView: UITableViewCell 
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) 
        super.init(style: .Subtitle, reuseIdentifier: reuseIdentifier)

        detailTextLabel?.numberOfLines = 0
        detailTextLabel?.text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."


【问题讨论】:

您的表格视图单元格中是否有适当的自动布局约束? 尝试删除你的estimatedHeightForRowAtIndexPath func 【参考方案1】:

设置您的标签(在本例中称为yourText

 var yourText : UILabel = 
    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false
    return label
()

以这种方式设置你的单元格约束并将setupComponents方法放在这里:

 required init(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)!
        setupComponents()
    

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) 
        super.init(style: .Subtitle, reuseIdentifier: "CellId")

        setupComponents()

    

        func setupComponents()



    self.addSubview(yourText)

    yourText.leftAnchor.constraintEqualToAnchor(self.leftAnchor, constant: 6).active = true
            yourText.centerYAnchor.constraintEqualToAnchor(self.centerYAnchor).active = true
            yourText.widthAnchor.constraintEqualToConstant(110).active = true

    yourText.numberOfLines = 0

    yourText.lineBreakMode = NSLineBreakMode.ByWordWrapping
     self.bottomAnchor.constraintEqualToAnchor(yourText.bottomAnchor, constant: 5).active = true
    

【讨论】:

以上是关于自我调整大小的表格视图单元格不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 swift 自动调整大小的集合视图单元格不起作用

搜索自定义表格视图单元格不起作用并返回 nil

使用固定大小的子视图和自动布局调整 UIView 的大小不起作用

自动调整嵌入在 UITableView 中的 UICollectionView 单元格不起作用

用 jquery 选择 :visible 表格单元格不起作用?

具有多个标签的自我调整大小的单元格不显示多行标签