Ячейка Swift 4.2 UITableView автоматически не меняет свою высоту - PullRequest
0 голосов
/ 03 марта 2019

У меня проблема с автоматическим изменением размера ячейки.В ячейке есть UILabel с длинным текстом.Однако его не видно, потому что ячейка не становится автоматически больше.

import UIKit 
class ViewController: UIViewController {

@IBOutlet weak var tableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    tableView.estimatedRowHeight = 50
    tableView.rowHeight = UITableView.automaticDimension
  }
}

extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CellTableViewCell

    cell.txt.text = "Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. "

    cell.txt.numberOfLines = 0
    cell.txt.lineBreakMode = .byWordWrapping
    cell.txt.sizeToFit()

    return cell
}

}

Результат:

<blockquote class="imgur-embed-pub" lang="en" data-id="a/keAv11b"><a href="//imgur.com/keAv11b"></a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>

Не могли бы вы проверить это и сказать мне, что не так?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Прежде всего вы должны установить Delegate и DataSource вашего tableView:

tableView.dataSource = self
tableView.delegate = self

После этого убедитесь, что если вы используете storyBoard для AutoLayout.UILabel в UITableViewCell должен быть ограничен всем до краев.Я имею в виду верхнее, нижнее, начальное и конечное ограничение, установленное на ноль или стандартное значение.

Иногда установка tableView.estimatedRow и tableView.rowHeight не работает, поэтому лучше использовать функцию делегата:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}
0 голосов
/ 03 марта 2019

По вашему коду, мне кажется, что вы не установили Delegate и DataSource для вашего tableView.

tableView.dataSource = self

Кроме того, вам нужно зарегистрировать пользовательскую ячейку в tableView, например, в viewDidLoad,просто так:

tableView.register(UINib(nibName: "YOUR CELL NAME", bundle: nil), forCellReuseIdentifier: "YOUR CELL REUSE IDENTIFIER")

Пожалуйста, дайте мне знать, если это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...