问题描述
我目前有一个表视图控制器,它不仅包含单元格,还包含一个UIView。现在,在该UIView中有一个标签,其中可能包含多行文本,并带有 See More 按钮。当我按下该按钮时,按钮本身将消失,并且text.numberOfLines设置为0,因此视图应展开以显示所有文本。在我看来,这似乎不起作用,尽管该按钮确实消失了,但文本一直延续到屏幕边缘,被截断了而不是向下延伸。
但是,当整个UIView在表视图控制器之外时,上述功能将按预期工作,但在将它们移至原型单元上方的表View内之后,这些功能将无法正常工作。有任何想法吗?
解决方法
设置tableviewcell时,必须使用委托函数为行指定固定高度
func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) {
if expandedArray[indexPath.row] {
return 60
} else {
return UITableViewAutomaticDimension
}
}
然后保留一个布尔数组,以指定单元格是否扩展。首先将布尔值设置为false,表示“未扩展”。 然后,当用户按下“查看更多”按钮时,使数组中具有正确索引的布尔值为true,表示该单元已扩展。并调用以下代码更新单元格。
tableView.beginUpdates()
tableView.reloadRows(at: [IndexPath(row: index,section: 0)],with: .automatic)
tableView.endUpdates()
应该可以解决问题。 附注:别忘了在表视图单元格中适当添加约束。
,使用UITableViewAutomaticDimension
并单击“查看更多”按钮重新加载单元格。