【发布时间】:2018-01-10 17:21:30
【问题描述】:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if let cell = tableView.cellForRow(at: indexPath) as? ExpandablePlaneTableViewCell {
return 400.0
}
return 75.0
}
我想更改单元格的大小,但在 heightForRowAt 内部它看不到我的 cell 并崩溃了。当我把if let放在那里时,检查它没有进入块内,只需要75。
谁能告诉我问题是什么?这对我来说太奇怪了! 我已经将委托设置为自我。所以它调用了该函数,但无法检测到我的单元格。
更新
在我的ExpandablePlaneTableViewCell 我有一个变量:
var exapanded = false
稍后在我的 ViewController 中:单击单元格中的按钮时,我运行我的委托方法:
func expandViewButtonTapped(_ sender: ExpandablePlaneTableViewCell, for indexPath: IndexPath) {
sender.exapanded = true
tableView.reloadRows(at: [indexPath], with: .automatic)
}
在我想扩展它并重新加载单元格之后
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "expandableCell", for: indexPath) as! ExpandablePlaneTableViewCell
cell.delegate = self
cell.indexPath = indexPath
return cell
}
【问题讨论】:
-
它无法获取单元格或单元格从不属于
ExpandablePlaneTableViewCell类型?你能检查一下吗? -
不要那样做。如果单元格不可见,首先
tableView.cellForRow(at:)将返回 nil。 -
tableView.cellForRow(at: indexPath)是返回 nil 还是返回不可转换为ExpandablePlaneTableViewCell的东西?您可以通过此时调试应用程序并查看tableView.cellForRow(at: indexPath)的结果来验证这一点。 -
@Larme 但我需要知道要更改其大小的单元格是什么。我必须检查它是否被扩展了
-
@GiuseppeLanza 它似乎从来都不是 ExpandablePlaneTableViewCell 类型
标签: ios swift uitableview heightforrowatindexpath