Max*_*mVW 0 uitableview ios swift
我要问的问题已经问了很多,但并不是我想要的。
这很简单,我想更改特定单元格的行高,并希望在UITableViewCell类本身中执行此操作。我试图从UIViewController调用tableview:
ViewController().tableView.rowHeight = 100
Run Code Online (Sandbox Code Playgroud)
但是然后我得到一个错误。所以我的问题是,是否可以在tableviewcell类本身中更改rowheight?如果是这样,怎么办?
谢谢!
从标志开始,以跟踪单元是否应该扩展:
let cellShouldExpand = false
Run Code Online (Sandbox Code Playgroud)
当您要动画化高度变化时,请调用以下方法:
cellShouldExpand = true
tableView.beginUpdates()
tableView.endUpdates()
Run Code Online (Sandbox Code Playgroud)
并更改heightForRowAt:如下:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath == indexPathOfCellYouWantToChange && cellShouldExpand {
return 100 // the height you want
} else {
return UITableViewAutomaticDimension
}
}
Run Code Online (Sandbox Code Playgroud)
执行相反的操作以还原更改(即,设置cellShouldExpand = false并再次调用tableview更新函数)。
如果您希望所有单元格都具有相同的高度,则可以更改rowHeight,除非正确的方法不是这样做,ViewController()...因为这会实例化新的视图控制器。相反,您可以像这样简单地自动引用tableview:
tableView.rowHeight = 100
Run Code Online (Sandbox Code Playgroud)
要么
self.tableView.rowHeight = 100
Run Code Online (Sandbox Code Playgroud)
如果要为特定单元格设置不同的行高,则需要使用UITableViewDelegate。在文件顶部声明视图控制器时,可以添加委托一致性:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
Run Code Online (Sandbox Code Playgroud)
然后在ViewController类内部可以实现以下方法:
let indexPathOfCellYouWantToChange = IndexPath(row: 2, section: 0)
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath == indexPathOfCellYouWantToChange {
return 100 // the height you want
} else {
return UITableViewAutomaticDimension
}
}
Run Code Online (Sandbox Code Playgroud)
(indexPathOfCellYouWantToChange应设置为您要更改其高度的单元格的行和部分)
Apple文档提供了有关如何正确使用此方法的更多信息:https : //developer.apple.com/reference/uikit/uitableviewdelegate/1614998-tableview
讨论区
该方法允许委托指定具有不同高度的行。如果实现了此方法,则它返回的值将覆盖为给定行的
rowHeight属性指定的值UITableView。使用tableView(_:heightForRowAt:)而不是rowHeight属性会影响性能。每次显示表视图时,它tableView(_:heightForRowAt:)都会为其每个行调用委托,这对于具有大量行(大约1000或更多)的表视图可能会导致严重的性能问题。另请参阅tableView(_:estimatedHeightForRowAt:)。
| 归档时间: |
|
| 查看次数: |
4548 次 |
| 最近记录: |