gpt4 book ai didi

ios - 点击时动态更改 uitableviewcell 高度

转载 作者:行者123 更新时间:2023-11-29 10:20:42 25 4
gpt4 key购买 nike

我有一个由一些自定义表格 View 单元格填充的表格 View ,在每个单元格中都有一个 UILabel 其原始 numberOFLines 为 5。此 的内容UILabel 可能超过 5 行,所以如果我将 numberOFLines 设置为 0,则此 UILabel 可能会扩展到 10 行甚至更多,所以当我设置 numberOFLines 为 0,单元格高度应该更大。

假设一开始当numberOfLines为5时,一个单元格的高度为200。当我点击这个标签时,numberOfLines设置为0,这个标签尝试显示所有内容并且应该有 10 行文本,此单元格的高度应为 250,以便它可以正确显示所有内容。当我再次点击它时,numberOfLines 应该回到 5,单元格高度应该回到 200。

所以我向这个标签添加了一个UITapGestureRecognizer,当点击时,调用一个方法来重置numberOfLines:

- (void)mainContentLabelTapped {
NSLog(@"main content label tapped");
(self.mainContentLabel.numberOfLines == 0) ?
[self.mainContentLabel setNumberOfLines:5]:
[self.mainContentLabel setNumberOfLines:0];
}

问题是,当我点击 mainContentLable 时,此标签本身会扩展到更多行或收缩回 5 行,但单元格高度保持不变,直到我将此单元格滚动出屏幕并将其滚动回来再次这样它的高度可以重新计算。

那么当我点击那个标签时如何改变单元格高度呢?

stackoverflow 中有大量关于表格 View 单元格动态高度的问题,但所有解决方案都是向表格 View 发送消息,例如 begin/endUpdatereloadData。在我的问题中,点击手势是我自己单元格的 .m 文件中的标志性护理,因此我找不到将这些消息发送到表格 View 并要求它重新计算单元格高度的方法。

谢谢!

最佳答案

您必须重新加载 UITableView,并通过重新加载更改任一特定单元格的高度。

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
selectedIndexPath = indexPath;
[self.tableView beginUpdates];
[self.tableView endUpdates];
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([indexPath compare:selectedIndexPath] == NSOrderedSame) {
return 80;
}
return 40;
}

这样,选中的行高就会比其他行高。

谢谢

编码愉快!

关于ios - 点击时动态更改 uitableviewcell 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35478255/

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