为什么在heightForRowAt方法中我的单元格为零?

时间:2018-01-10 17:21:31

标签: ios swift uitableview heightforrowatindexpath

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
}

1 个答案:

答案 0 :(得分:6)

请勿尝试在*Main> show "ł" ł *Main> show "ą" ą *Main> show "ę" ę *Main> show ['ę'] ę *Main> show ["chleb", "masło"] [chleb,masło] *Main> data T = T String deriving (Show) *Main> t = T "Chleb z masłem" *Main> t T Chleb z masłem *Main> show t T Chleb z masłem 中获取单元格。在你的情况下肯定没有理由这样做。

您似乎希望高度为某些类型的单元格的一个值,而其他类型的高度则为另一个高度。

根据heightForRowAt,使用与cellForRowAt中相同的基本逻辑来确定要返回的高度。 换句话说,根据您的数据模型决定,而不是在单元格上。