单击UIButton动态管理TableViewCell高度

时间:2017-01-23 05:22:12

标签: ios objective-c uitableview

我正在使用TableViewController和自定义TableViewCell进行练习。我已经提出了一个问题清单&点击显示按钮后,它会显示问题的选项。

enter image description here

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

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

并在点击显示按钮之前和之后输出如下。

enter image description here

但是我点击了显示按钮后尝试动态管理行高度。

约束:

enter image description here

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

但是没有解决我的问题。

感谢。

1 个答案:

答案 0 :(得分:2)

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

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

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

有关详细信息,请发布prototype-cell屏幕截图并显示您给予的限制。

  

修改

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

enter image description here

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

enter image description here

<强>原因:

StackView不允许内部内容为0

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

针对此类问题还有一种方法

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

    1. 如果可以在tableView中一次加载一个选项单元格,则在变量中维护选定按钮选项。
    2. 如果一次可以加载多个选项单元格,则使用数组来维护它们。