动态更改所有Uitableviewcells高度以填充swift中的uitableview

时间:2016-02-04 19:58:43

标签: ios swift uitableview

关于我在swift中构建的ios应用程序,我一直有一个问题。我有一个Uitableview,具有动态属性,嵌入在我的视图控制器中。我想要做的是调整所有单元格的大小以填充表格视图。我试过了:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    tableView.reloadData()
    let height = tableView.contentSize.height
    return height
}

但是这只是uitableview的高度返回零。

非常感谢帮助。

1 个答案:

答案 0 :(得分:3)

您不希望从此委托方法调用reloadData(),因为正在重新加载此方法而调用此方法。

实际上,如果所有单元格的高度相同,则根本不想使用此方法。只需设置表格视图的rowHeight属性。

假设这是从视图控制器发生的,我会覆盖viewDidLayoutSubviews()以在表视图大小更改时收到通知并在那里设置行高:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    tableView.rowHeight = tableView.bounds.height
}

您可能需要也可能不需要在其中添加reloadData()来更新表格视图。先试试吧。设置行高可能会自动触发重新加载。

另请注意,我不使用contentSize来获得身高。这是所有单元格的高度,它取决于您设置的行高。所以,再次使用它会有点循环。