通过点击 UIButton 动态管理 TableViewCell 高度

Posted

技术标签:

【中文标题】通过点击 UIButton 动态管理 TableViewCell 高度【英文标题】:Dynamically manage TableViewCell Height by clicking UIButton 【发布时间】:2017-01-23 05:22:11 【问题描述】:

我正在使用TableViewController 和自定义TableViewCell 进行练习。我制作了一个问题列表,点击 Show 按钮后,它会显示问题的选项,如下所示。

但是从上面的图片中删除问题列表视图的间距我已经写了这段代码

-(void)viewWillAppear:(BOOL)animated
    self.tableView.estimatedRowHeight = 40.0;
    self.tableView.rowHeight = UITableViewAutomaticDimension;

点击显示按钮前后的输出是这样的。

但我试图在单击显示按钮后使我的输出具有动态可管理的行高。

约束:

注意:我已经通过了 Using Auto Layout in UITableView for dynamic cell layouts & variable row heights

但还没有解决我的问题。

谢谢。

【问题讨论】:

【参考方案1】:

你的约束不合适。而不是使用rowHeight 属性,而是使用heightForRow 方法,因为这个属性调用了一次,但是这个方法被每个cell 调用。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
return UITableViewAutomaticDimension;

对于约束,单元格中的每个组件都必须具有顶部、底部和高度。对于任何组件,如果您错过了此约束中的任何一个,那么您的 UI 中就会创建缺陷。

有关更多详细信息,请发布您的prototype-cell 屏幕截图并显示您对他们的限制。

编辑

勾选剪辑到StackView及其内部四个按钮的边界属性。

执行此操作后,我得到以下输出:

原因:

StackView 不允许内部内容为0

如果你仍然怀疑我有演示,你可以从我这里拿走。

对于这类问题还有另一种方法

    创建两个自定义单元格,一个用于问题,另一个用于选项。 最初,称重传感器问题。 如果用户单击show 按钮,则获取按钮的索引路径并在该索引路径之后的表格中加载选项单元格。 如果用户单击 hide 按钮,则删除该选项单元格。

注意:

    如果可以在 tableView 中一次加载一个选项单元格,则将按钮选择的选项保留在变量中。 如果可以一次加载多个选项单元格,则使用数组来维护它们。

【讨论】:

感谢您的重播。我正在使用xcode 7.0ios 9.0,但找不到heightForRow 属性。如果您能解释一下,我将不胜感激。 OK 发布您的 UI 和约束的屏幕截图,正如我在答案的最后几行中所说的那样。 rowHeight 总是对我有用,唯一的问题可能是约束。 这是我的限制条件,我使用了 stackview。 i.stack.imgur.com/SkKYa.png 选项的发布约束。

以上是关于通过点击 UIButton 动态管理 TableViewCell 高度的主要内容,如果未能解决你的问题,请参考以下文章

如何从数组中过滤多个选定值并将其从 uibutton 加载到其他 uitableview

删除动态创建的 UIButton 子视图

动态更改 UITableView 单元格中 UIButton 的图像

点击 UIButton 以编程方式创建另一个 UIButton

通过点击 UIButton 重新加载 UIScrollView

如何通过点击其他 UIButton 来移动 UILabel?