我有一个UITableView(表1)。在UITableView Cell中,我有另一个UITableView(表2)。
在Table 2
中,行的高度为UITableViewAutomaticDimension
。
我的要求是 - 我希望Table 2
不应该滚动并按照其中的行数取其全高。所以,根据Table 2
的高度,我需要设置{ {1}}的行高。
我正在使用表2的contentSize.height,但它不起作用。我经常搜索但没有找到任何东西。
代码:
Table 1
更新:
我调试了代码,发现表2的单元格的估计高度影响表1单元格的高度。
即 - 如果表2的细胞的估计高度为100并且这些是5个细胞。然后这个func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
let cell = tableView_First.dequeueReusableCell(withIdentifier: "SecondTableViewCell") as! SecondTableViewCell
return cell.second_TableView.contentSize.height
}
给了我500.哪个错了。因为细胞有不同的高度10,20,30,40,10。
任何建议都将受到赞赏。
谢谢!
答案 0 :(得分:0)
由于以下两个原因,你可能会得到错误的结果
当您cell.second_TableView.contentSize.height
时,cell.second_TableView
可能无法完全加载,因此您的身高会出现错误。
您正在将新单元格取代而不是获取现有的已加载单元格。
请尝试以下代码:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
//Get existing cell rather deque new one
let cell = tableView_First.cellForRowAtIndexPath(indexPath) as! SecondTableViewCell
//This will force table view to load completely
cell.second_TableView.layoutIfNeeded()
return cell.second_TableView.contentSize.height
}
希望这能解决您的问题。
答案 1 :(得分:0)
在viewDidLoad中写下这两行,
tableView.estimatedRowHeight = 241
tableView.rowHeight = UITableViewAutomaticDimension
func tableView(_ tableView:UITableView,heightForRowAt indexPath:IndexPath) - > CGFloat { 返回UITableViewAutomaticDimension }