Ios 动态更改所有uitableview单元格的高度,以在swift中填充uitableview

Ios 动态更改所有uitableview单元格的高度,以在swift中填充uitableview,ios,swift,uitableview,Ios,Swift,Uitableview,我在swift中构建的ios应用程序出现问题已经有相当一段时间了。我的视图控制器中嵌入了一个具有动态属性的Uitableview。我要做的是调整所有单元格的大小以填充表格视图。我试过: func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { tableView.reloadData() let height = tableView.

我在swift中构建的ios应用程序出现问题已经有相当一段时间了。我的视图控制器中嵌入了一个具有动态属性的Uitableview。我要做的是调整所有单元格的大小以填充表格视图。我试过:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    tableView.reloadData()
    let height = tableView.contentSize.height
    return height
}
但对于uitableview的高度来说,这只是返回了零


非常感谢您的帮助

您不想从此委托方法调用
reloadData()
,因为调用此方法是因为正在重新加载数据

事实上,如果所有的单元格都是相同的高度,您根本不想使用这种方法。只需设置表视图的
rowHeight
属性

假设这是从视图控制器发生的,我将重写
viewdilayoutsubviews()
,以便在表视图大小更改时收到通知并在其中设置行高:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    tableView.rowHeight = tableView.bounds.height
}
您可能需要也可能不需要在那里添加
reloadData()
,以更新表视图。先不用它试试。设置行高可能会自动触发重新加载


还要注意,我没有使用
contentSize
来获取高度。这是所有单元格的高度,由您设置的行高度决定。同样,使用它会有一点循环。

您不想从这个委托方法调用
reloadData()
,因为这个方法被调用是因为数据正在被重新加载

事实上,如果所有的单元格都是相同的高度,您根本不想使用这种方法。只需设置表视图的
rowHeight
属性

假设这是从视图控制器发生的,我将重写
viewdilayoutsubviews()
,以便在表视图大小更改时收到通知并在其中设置行高:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    tableView.rowHeight = tableView.bounds.height
}
您可能需要也可能不需要在那里添加
reloadData()
,以更新表视图。先不用它试试。设置行高可能会自动触发重新加载


还要注意,我没有使用
contentSize
来获取高度。这是所有单元格的高度,由您设置的行高度决定。因此,再次使用它会得到一点圆形。

假设您希望所有单元格都是表格视图的高度。从你的问题上看,这并不清楚。如果您希望所有单元格同时可见,则只需将高度除以表视图中的行数即可。这假定您希望所有单元格都是表视图的高度。从你的问题上看,这并不清楚。如果希望所有单元格同时可见,则只需将高度除以表视图中的行数即可。