Ios 动态更改所有uitableview单元格的高度,以在swift中填充uitableview
我在swift中构建的ios应用程序出现问题已经有相当一段时间了。我的视图控制器中嵌入了一个具有动态属性的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.
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
来获取高度。这是所有单元格的高度,由您设置的行高度决定。因此,再次使用它会得到一点圆形。假设您希望所有单元格都是表格视图的高度。从你的问题上看,这并不清楚。如果您希望所有单元格同时可见,则只需将高度除以表视图中的行数即可。这假定您希望所有单元格都是表视图的高度。从你的问题上看,这并不清楚。如果希望所有单元格同时可见,则只需将高度除以表视图中的行数即可。