如何根据插入的行数设置tableview的高度

时间:2016-02-15 19:47:52

标签: swift uitableview

假设我得到了3行的TableView。

当我从DB插入记录数据时,它将变为4行。

所以,我不想看到额外的行,因为我设置了tableview的高度。

如果我的tableView有4行,我的tableView高度只有4行而不是一些额外的空格。

如果它变为3,则高度为3行。

那么,如何根据插入的数字行创建表视图高度。

我不是在谈论自我调整表格单元格。

我说的是根据插入的记录动态更改tableView高度

2 个答案:

答案 0 :(得分:2)

您可以通过更改framesize或布局约束来使视图控制器中的表视图更高。

也就是说,如果您的表是3行...您可以通过它的frame.size.height设置表高度,或者您可以调整布局约束(也可以设置为IBOutlet)以允许更多空间。

编辑:

以下是如何在代码中执行此操作(假设您使用的是AutoLayout)

1)首先将约束添加到表视图

Add Constraints to the Table You want to mess with

2)

将IBOutlet添加到视图控制器代码中。

Add Outlet to Your View Controller

3)

通过控制单击视图控制器对象并将鼠标移动到底部边缘布局来连接故事板中的插座,如下所示:

Make Connection

4)

然后现在你有了一个布局插座,你可以调整底边的常数,具体取决于你想要桌子的高度。

在这里,我在视图第一次出现时这样做。您需要根据需要自定义此代码。

change layout constraint constant

答案 1 :(得分:0)

迈克尔解决方案就像魅力一样,但我想补充一点,你可以使用高度约束而不是底部和numberOfRowsInSection函数

因此,您可以将行高与行数相乘

我的表格行高为40,标题高度为40

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    var noOfRows = Int()

    if  case == 1 {

          noOfRows = 5

    } else if case == 2  {

          noOfRows = 2

    } 

    heightOfTable.constant = CGFloat(noOfRows) * 40  + 40  // +40 for the header height
    return noOfRows
}