gpt4 book ai didi

iOS:当其accessoryView更改时,如何触发tableViewCell的约束/自动布局的刷新?

转载 作者:行者123 更新时间:2023-11-29 02:04:19 27 4
gpt4 key购买 nike

我有一个自定义 tableview + 自定义单元格,它们是使用基于约束的自动布局构建的(全部以编程方式,无 IB)。在每个单元格中(除其他外)有一个(可能)带有文本的多行标签。自动布局的第一次计算很好 - 即 UILabel 根据其文本长度正确换行。

但是一旦我选择一个单元格(即从 UITableViewCellAccessoryNone 更改为 UITableViewCellAccessoryCheckmark)并且 UILabel.text 所需的行数应该更改 - 但保持不变。

我试过了...

[myTableView reloadData];

[myTableView beginUpdate];
[myTableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
[myTableView endUpdates];

...在单元格选择委托(delegate)中,但没有成功更新单元格布局。

我想我需要告诉系统重新评估 tableviewcell 的约束(特别是重新评估 UILabel 的 preferredMaxLayoutWidth。)但我不知道如何以正确的方式做到这一点。(我用 setNeedsUpdate 尝试了一些东西,而不是试错式。)

预先感谢您为我指明了正确的方向!

最佳答案

您必须通过以下方式专门重新评估 UILabel 的 preferredMaxLayoutWidth:-

- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self updatePreferredMaxLayoutWidth:self.lblText]; // you have to store a UIlabel temporarily on didselectaction of UITableView
[self.view layoutSubviews];
}

关于iOS:当其accessoryView更改时,如何触发tableViewCell的约束/自动布局的刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29969135/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com