我使用包含3个不同单元格的静态表格视图。当点击第一个单元格中的按钮时,第一个单元格的高度应该增加。下面是点击按钮时调用的函数。
@Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
@Version
private Date updated_at;
在表格视图的委托@IBAction func toggleExpandCamera(_ sender: Any) {
self.shouldShowCameraPreview = !self.shouldShowCameraPreview
self.tableView.reloadRows(at: [IndexPath(row: 0, section: 0)], with: .automatic)
}
heightForRowAt()
我已经确认override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 0 {
let expandedHeight: CGFloat = 415
let collapsedHeight: CGFloat = 115
if self.shouldShowCameraPreview {
return expandedHeight
}
return collapsedHeight
} else if indexPath.row == 2 {
// If already premium, dont show purchases cell.
if AGTUserDefaultValues.isUserPremium {
return 0
}
// Last cell should be same height as the table view
return self.tableView.frame.height - (self.navigationController?.navigationBar.frame.height ?? 0)
- min(UIApplication.shared.statusBarFrame.height, UIApplication.shared.statusBarFrame.width)
} else {
return super.tableView(tableView, heightForRowAt: indexPath)
}
}
正在被调用,并且在调用heightForRowAt()
时,其他单元格高度正常工作。它只是第一个表现得非常奇怪的细胞。好像它消失了什么的。我在扩展之前和之后都附上了屏幕截图。
进一步检查,看起来细胞仍然存在,但仍然具有相同的高度。唯一的区别是现在两个单元之间的空间更大。我还发现单元格的alpha值为0。
更新 我试过创建了一个新项目,只有tableview和扩展单元格的功能,但仍然在那个项目上,同样的事情发生了。如果有人有兴趣帮助我上传了项目here。
答案 0 :(得分:0)
我已经尝试过你的项目并发现了改变:
self.tableView.reloadRows(at: [IndexPath(row: 0, section: 0)], with: .automatic)
进入:
self.tableView.reloadData()
按预期工作。
答案 1 :(得分:0)
我想出了答案。在我的toggleExpandCamera()
函数中,我没有重新加载表视图,而是将其替换为:
@IBAction func toggleExpandCamera(_ sender: Any) {
self.shouldShowCameraPreview = !self.shouldShowCameraPreview
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
细胞高度按预期动画。