swift4: высота содержимого UITableViewHeight получить фиксированную высоту для таблицы - PullRequest
0 голосов
/ 07 мая 2018

Я использую swift4, у меня есть выход для просмотра таблицы и высоты просмотра таблицы:

@IBOutlet var commentsTableView: UITableView!
@IBOutlet var commentTableHeight: NSLayoutConstraint!

таблица возвращает динамическую высоту для каждой ячейки

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
      return UITableViewAutomaticDimension
}

Я хочу изменить высоту табличного представления при получении данных от API:

//// Consum APIs
func getProductDetails() {
    API.getProductDetails(category_id: String(self.passed_category_id)) {( error: Error?, success: Bool, products: ProductDetails) in
        if success {
            self.product = products
            self.setProductDetailsValue()
        } else {

        }
    }
}

func setProductDetailsValue() {
if(self.product.comments.count > 0) {
        self.commentsTableView.isHidden = false
        self.commentsTableView.reloadData()
        self.commentsTableView.layoutIfNeeded()
        self.commentTableHeight.constant = self.getTableViewHeight(tableView: self.commentsTableView)

        print("comment table height: ", self.commentTableHeight.constant, self.getTableViewHeight(tableView: self.commentsTableView))
    } else {
        self.commentsTableView.isHidden = true
    }
}
func getTableViewHeight(tableView: UITableView)-> CGFloat {
    tableView.layoutIfNeeded()

    return tableView.contentSize.height
}

оператор print печатает такие значения, как:

comment table height:  352.0 624.333324432373

, что означает, что self.commentTableHeight.constant принимает другое значение. Я нахожу, что каждый раз, когда приложение дает 44 pt каждой ячейке, но я не знаю, в чем проблема с моим кодом. любая помощь?

1 Ответ

0 голосов
/ 07 мая 2018

Вы должны изменить макет view после изменения константы

self.commentTableHeight.constant = self.getTableViewHeight(tableView: self.commentsTableView)
self.view.layoutIfNeeded()
print("comment table height: ", self.commentTableHeight.constant, self.getTableViewHeight(tableView: self.commentsTableView))

//

Вы должны поместить это в viewDidLoad

tableView.estimatedRowHeight = 200; // your estimated height

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