gpt4 book ai didi

ios - UITableView:单击其中的按钮时如何动态更改单元格高度?

转载 作者:行者123 更新时间:2023-12-02 15:49:01 25 4
gpt4 key购买 nike

我有一个 UITableView,其中每个单元格都有一个按钮。
单击按钮时,单元格的高度将发生变化。
当然,整个tableview的高度也会随之改变。
我在长时间冲浪时找不到方法。实现这一目标的优雅解决方案是什么?

最佳答案

(请参阅 this 答案。感谢 Tapas Pal 编写原始答案。我只是对其进行了更改以更好地适合您的问题。)

您将需要一个 BOOL 变量来告诉单元格其高度应该与其他单元格不同。您还需要一个数字(在这里,我将使用 NSInteger)变量,以便您可以增加右侧单元格的高度。

BOOL shouldCellBeExpanded = NO;
NSInteger indexOfExpandedCell = -1;

然后,在您的 -tableView:cellForRowAtIndexPath: 方法中,将以下内容添加到您设计单元格的位置。您将按钮标记设置为与其单元格的行相同,以便您知道要展开哪个单元格。此外,如果您需要向单元格添加任何元素,您可以在 if 语句中执行此操作。

[[cell aButton] setTag:[indexPath row]];

if(shouldCellBeExpanded && [indexPath row] == indexOfExpandedCell)
{
// design your read more label here
}

移至按钮的IBAction。当点击按钮时,UITableView 将重新加载按钮所在的单元格。 注意:如果您在 UITableView 中使用多个部分,则需要添加另一个数字变量来解决这个问题。如果您需要帮助,请发表评论。

-(IBAction) aButtonTapped:(id)sender
{
UIButton *aButton = (UIButton *)sender;
indexOfExpandedCell = [aButton tag];
shouldCellBeExpanded = YES;

[[self tableView] beginUpdates];
[[self tableView] reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForItem: indexOfExpandedCell inSection:0]] withRowAnimation:UITableViewRowAnimationAutomatic];
[[self tableView] endUpdates];
}

最后,在-tableView:heightForRowAtIndexPath:方法中:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(shouldCellBeExpanded && [indexPath row] == indexOfExpandedCell)
return 200.0f; //Your desired height for the expanded cell
else
return 100.0f; //The other cells' height
}

它的作用是检查某个单元格是否需要扩展,如果是,则检查该单元格是否是当前要求高度值的单元格。如果是,则返回值是展开后的高度。如果不是,则为原始的。

关于ios - UITableView:单击其中的按钮时如何动态更改单元格高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565758/

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