如何从UITableViewCell更新heightForRow

时间:2016-07-13 11:59:45

标签: ios objective-c uitableview rubymotion

我当前设计的工作方式是我将一个单元格出列并给它一个故事ID。在单元格initWithStyle中,我创建mysubViewUILabel),设置autolayout约束并触发加载故事标题API的{​​{1}}请求。然后我为async设置了文本。

问题是 - 此时UILabel已经为单元格计算了错误的高度,因为最初UITableViewController没有UILabel。现在更新它的唯一方法是执行

text

但是感觉不对,因为我需要从单元格中引用父parentTableView.beginUpdates parentTableView.endUpdates ,并且必须有更好的方法。我错过了什么吗?我顺便使用UITableView作为行高。

2 个答案:

答案 0 :(得分:1)

我建议你观看WWDC 2012的Session 211,构建并发用户界面并在那里应用这些概念。这包含其内容被独立查询和呈现的单元格。

基本概念如下:
1.在tableView:cellForRowAtIndexPath中,实例化一个单元格 2.在相同的方法中,创建用于检索数据以填充单元格的操作并将其存储到字典中。对单元格的引用传递给操作。该操作有一个完成处理程序,用于填充单元格并从字典中删除操作 3.在从方法返回单元格之前,将操作添加到操作队列中 4.在tableView:didEndDisplayingCell:forRowAtIndexPath中,取消已移出屏幕的单元格的操作将从字典中删除并删除。

答案 1 :(得分:0)

在" cellForRowAtIndexPath"中添加以下代码返回单元格之前的方法。

cell.setNeedsUpdateConstraints()     cell.updateConstraintsIfNeeded()

此外,您只能使用" updateConstraintsIfneeded"