如何在不重新加载表格的情况下调整表格单元格中的标签?

问题描述:

我有一个表格,单元格有一个标签,我希望能够直接更新标签而无需重新加载表格或单元格。我找到了一种方法来做到这一点,它的工作原理:如何在不重新加载表格的情况下调整表格单元格中的标签?

let cell = self.tableView.cellForRowAtIndexPath(NSIndexPath(forRow: index, inSection: 0)) as! cellClass 
    cell.textLabel.text = newText as? String 

唯一的问题是,标签的大小不会改变。如果您重新加载表格,则标签会更改大小以适应文本数量。我尝试过使用layoutIfNeeded()和sizeToFit(),但标签不会扩展到第二行。宽度并不是什么大问题,主要是它没有包裹,所以换句话说,高度不会延伸到更多的线条。

+0

也喜欢在我的答案http://*.com/questions/40293336/uitableviewautomaticdimension-not-working-for-resizing-cell-height/40300589#40300589 – Joe

+0

你试过'tableView.beginUpdates()'后跟'tableView.endUpdates()'? – crizzis

+0

有一些beginUpdates/endUpdates的东西。它正在做我想做的事情,但问题在于有时候这个标签会很快更新,并且在发生这种情况时似乎会崩溃。对于更新或两个,它虽然工作。我试图获得主队列,但仍然崩溃。任何想法为什么这样做? –

首先,我会建议(取决于上下文)来创建自定义单元格(的UITableViewCell的子类),以及名称的UILabel不同的东西,说articleTitleLabel。 “textLabel”是一个继承的属性,我想你仍然可以使用它,但要确保你在“awakeFromNib”方法(设置numberOfLines = 0或2)中定制它。我还建议在自定义单元类中添加一个公共实例方法。事情是这样的:

function configureWithText(text: String) { 
    articleTitleLabel.text = text 
    // or, textLabel.text = text 
} 

此外,您可能需要创建自定义细胞的.xib文件,并设置一些上,下,左,右约束标签。

希望它有帮助!

+0

没有工作。我已经做了大部分这些事情,并添加了一个函数,而不是直接更改文本,但它做同样的事情。 –