UIStackView с нулевой высотой, хотя у меня в нем есть контент

У меня есть UIStackView в UITableViewCell, и в нем есть четыре длинных текстовых метки. При первой загрузке я показываю только первую метку с высотой 44 в ячейке и скрываю остальные три, а StackView отображается правильно. Затем, когда я нажимаю на tableViewCell, мне нужно развернуть ячейку и показать другие три метки. Я показываю их и перезагружаю TableView, но после этого мой StackView имеет нулевую высоту, и все четыре метки также имеют нулевую высоту. Я столкнулся с этой проблемой только с IOS 10.1, и когда я использую ярлыки с коротким текстом, StackView работает хорошо.

Это мой код:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    var cell  = tableView.cellForRowAtIndexPath(indexPath) as! AboutUsTableViewCell
    cell.firstLabel.hidden = isExpanded
    cell.secondLabel.hidden = isExpanded
    cell.thirdLabel.hidden = isExpanded
    isExpanded = !isExpanded
    tableView.reloadData()
}

Это мой xib

Вот как выглядит до клика

Это после клика

Спасибо вам всем!


person Svetoslav Bramchev    schedule 06.01.2017    source источник


Ответы (2)


Вы должны обновить таблицу после изменения свойств isHidden. Это должно помочь.

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    var cell  = tableView.cellForRowAtIndexPath(indexPath) as! AboutUsTableViewCell
    cell.firstLabel.hidden = isExpanded
    cell.secondLabel.hidden = isExpanded
    cell.thirdLabel.hidden = isExpanded
    isExpanded = !isExpanded
    tableView.beginUpdates()
    tableView.endUpdates()
}

Также ознакомьтесь с этой статьей об использовании UIStackView внутри UITableView ячеек.

person Maksym Musiienko    schedule 06.01.2017

Установите количество строк в метках равным 0 и добавьте ниже код в метод viewDidLoad.

self.tableView.estimatedRowHeight = 44.0 //or cell height
self.tableView.rowHeight = UITableViewAutomaticDimension
person Bista    schedule 06.01.2017
comment
Я уже установил UITableViewAutomaticDimension, и все мои метки имеют 0 строк. Как я уже сказал, все работает идеально для IOS 9 и IOS 10.2. У меня проблема только с IOS 10.1 - person Svetoslav Bramchev; 06.01.2017