reloadRows无法正常工作

时间:2017-07-01 16:50:32

标签: swift uitableview swift4

由于文字扩展了100个字符,我的commentCell会显示更多按钮。当我按下它时,单元格应将行限制为0并重新加载单元格。

问题是我必须按两次单元格才能放大两倍以最小化单元格。

这是我扩大单元格的代码:

@IBAction func expandTextField(_ sender: UIButton) {
    let currentIndexPath = IndexPath(row: sender.tag, section: 0)
    self.state = !self.state
    print(state)

    self.tapMore.setTitle(self.state ? self.decreaseState: self.expandState, for: .normal)
    self.commentLabel.numberOfLines = (self.state ? self.expandedLines: self.numberOfLines)

    self.parentViewControllerCommentCell?.tableView.reloadRows(at: [currentIndexPath], with: .none)
}

注意:该功能正常,但只有点击总共2次。正确的单元格会放大,按钮的说明会相应更改。

重要

我尝试使用print语句查看状态何时发生变化。正如我所说,它每隔一次才会这样做。

true
true
false 
false

当我删除

self.parentViewControllerCommentCell?.tableView.reloadRows(at: [currentIndexPath], with: .none) 

功能,只需点击一下即可更改。

提前致谢!

1 个答案:

答案 0 :(得分:0)

UITableView 重复使用单元格。当你重新加载一行时,它会被一个可用于娱乐的单元替换。

无法保证重用的单元格将具有您在要替换的单元格中设置的参数。

您应该存储表格视图中的字符数是否在数据存储中的布尔值中达到100,而不是单元格本身。