自我调整大小UITableView单元格没有正确调整大小

时间:2017-06-23 11:44:55

标签: ios uitableview xcode8

我有一个UITableView静态单元格。描述标签应该显示多行文本,但只显示一行。

我选择了描述标签并将行数设置为0.我还将其设置为Word Wrap。

我按如下方式设置了自动尺寸:

class BeerTableViewController: UITableViewController {

    @IBOutlet weak var beerName: UILabel!
    @IBOutlet weak var brewer: UILabel!
    @IBOutlet weak var beerDescription: UILabel!

    var scannedBeer: Beer!

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.rowHeight = UITableViewAutomaticDimension
        tableView.estimatedRowHeight = 44

        beerName.text = scannedBeer.name
        brewer.text = scannedBeer.brewer
        beerDescription.text = scannedBeer.description
    }

    override func viewDidAppear(_ animated: Bool) {
        tableView.reloadData()
    }

}

我已将标签固定到ContentView的顶部和底部,如下所示: AutoLayout

Number of lines

2 个答案:

答案 0 :(得分:1)

尝试使用heightForRowAt indexPath:的{​​{1}}和estimatedHeightForRowAt indexPath:,返回UITableViewDelegate

只需将表格视图UITableViewAutomaticDimension设置为delegate,然后使用以下内容:

self

答案 1 :(得分:0)

这是因为您在ViewDidLoad上的 beereDescription 标签为零。你需要在cellForRowAtIndexpath而不是ViewDidLoad上分配值。

你无法在UIViewcontroller类中连接单元子视图的IBOutlet。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let identifier = "cellIdentifier"
        let cell = tableView.dequeueReusableCell(withIdentifier: identifier)

        beerDescription: UILabel? = (newsCell?.viewWithTag(101) as? UILabel) // assign tag to label in cell
        beerDescription.text = scannedBeer.description
       return cell

}