如何从 UITableViewCell 更新 heightForRow
How to update the heightForRow from UITableViewCell
我目前的设计工作方式是我将一个单元格出列并给它一个故事 ID。在单元格 initWithStyle
中,我创建 mysubView
(UILabel
),设置 autolayout
约束并触发 API
请求以加载故事标题 async
.然后我设置 UILabel
.
的文本
问题是 - 此时 UITableViewController
已经为单元格计算了错误的高度,因为最初 UILabel
没有 text
。现在更新它的唯一方法是
parentTableView.beginUpdates
parentTableView.endUpdates
但感觉不对,因为我需要从单元格中引用 parent UITableView
并且必须有更好的方法。我错过了什么吗?顺便说一句,我使用 UITableViewAutomaticDimension
作为行高。
在 return 单元格之前的 "cellForRowAtIndexPath" 方法中添加以下代码。
cell.setNeedsUpdateConstraints()
cell.updateConstraintsIfNeeded()
也只能使用"updateConstraintsIfneeded"
我建议您观看 Session 211 的 WWDC 2012,构建并发用户界面并应用那里的概念。这具有其内容被独立查询和呈现的单元格。
基本概念如下:
1. tableView:cellForRowAtIndexPath
中实例化了一个cell
2. 在相同的方法中,创建用于检索数据以填充单元格的操作并将其存储到字典中。对单元格的引用被传递给操作。该操作有一个完成处理程序,用于填充单元格并从字典中删除操作。
3. 在从方法返回单元格之前,将操作添加到操作队列。
4. 在tableView:didEndDisplayingCell:forRowAtIndexPath
中,对移出屏幕的单元格的操作被取消并从字典中删除。
我目前的设计工作方式是我将一个单元格出列并给它一个故事 ID。在单元格 initWithStyle
中,我创建 mysubView
(UILabel
),设置 autolayout
约束并触发 API
请求以加载故事标题 async
.然后我设置 UILabel
.
问题是 - 此时 UITableViewController
已经为单元格计算了错误的高度,因为最初 UILabel
没有 text
。现在更新它的唯一方法是
parentTableView.beginUpdates
parentTableView.endUpdates
但感觉不对,因为我需要从单元格中引用 parent UITableView
并且必须有更好的方法。我错过了什么吗?顺便说一句,我使用 UITableViewAutomaticDimension
作为行高。
在 return 单元格之前的 "cellForRowAtIndexPath" 方法中添加以下代码。
cell.setNeedsUpdateConstraints() cell.updateConstraintsIfNeeded()
也只能使用"updateConstraintsIfneeded"
我建议您观看 Session 211 的 WWDC 2012,构建并发用户界面并应用那里的概念。这具有其内容被独立查询和呈现的单元格。
基本概念如下:
1. tableView:cellForRowAtIndexPath
中实例化了一个cell
2. 在相同的方法中,创建用于检索数据以填充单元格的操作并将其存储到字典中。对单元格的引用被传递给操作。该操作有一个完成处理程序,用于填充单元格并从字典中删除操作。
3. 在从方法返回单元格之前,将操作添加到操作队列。
4. 在tableView:didEndDisplayingCell:forRowAtIndexPath
中,对移出屏幕的单元格的操作被取消并从字典中删除。