为什么在 heightForRowAt 方法中我的单元格为零?
Why in heightForRowAt method my cell is nil?
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
}
请勿尝试获取 heightForRowAt
中的单元格。在你的情况下当然没有理由这样做。
您似乎希望某些类型的单元格的高度是一个值,而其他类型的高度是另一个值。
只需使用与 cellForRowAt
中相同的基本逻辑,基于 indexPath
来确定 return 的高度。 换句话说,根据您的数据模型而不是单元格做出决定。
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
}
请勿尝试获取 heightForRowAt
中的单元格。在你的情况下当然没有理由这样做。
您似乎希望某些类型的单元格的高度是一个值,而其他类型的高度是另一个值。
只需使用与 cellForRowAt
中相同的基本逻辑,基于 indexPath
来确定 return 的高度。 换句话说,根据您的数据模型而不是单元格做出决定。