UITableView具有动态高度和自动布局约束

时间:2016-12-02 06:13:05

标签: ios uitableview dynamic autolayout nslayoutconstraint

我有一个使用自动布局cells动态增长constraints的表格视图。我有一个场景,我必须在其中一个动态构造的单元格中显示UITableView。这里最重要的是我不知道任何东西的框架,我必须使用约束来构造一切。我需要的只是解释如何实现这个目标?

1 个答案:

答案 0 :(得分:0)

所以我猜你有一个MasterViewController,里面有一个tableView。然后你想在MasterViewController的tableView的一个单元格中添加另一个tableView,它是MyCustomcell类的一部分。

使用tableView添加customCell并不是什么大问题,但根据CustomCell中显示的数据计算和维护MasterViewController的高度有点棘手。如果您正在询问如何在tableView中添加CustomCell,那么有很多很好的教程可以通过快速谷歌轻松获得。

我遇到了类似的情况,并以下列方式解决了问题。希望这会有所帮助。

1)如果你有一个customCell,你只需要显示文本。然后根据文本内容自动使用自动布局自动维护MasterViewController的tableView高度。 This tutorial有一个非常好的解释。

2)如果要在MasterViewcontroller tableView的一个单元格中添加tableView,那么它就变得棘手了。现在,MasterViewController单元格的高度取决于CustomCell tableview高度的高度内容。我尝试通过在Swift 3中应用不同的方法来处理这种情况,但最终通过以下方式得到结果: -

class MasterViewController: UIViewController {
          @IBOutlet weak var tableView: UITableView!

          var customCell:MyCustomCell? = nil

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "myCustomCell", for: indexPath) as! MyCustomCell
        cell.selectionStyle = UITableViewCellSelectionStyle.none
        customCell = cell
        return cell
    }

}

extension MasterViewController:UITableViewDelegate{

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

         if let aHeight = customCell?.tableView.contentSize.height{
             return aHeight
         }

         return 0

     }

}