无法调整包含UIView的UITableViewCell的大小

时间:2015-09-17 09:35:28

标签: ios objective-c uitableview uigesturerecognizer

我有一个自定义表格视图单元格。我在tableview单元格中有一个UIView,仅在表格展开时显示。每次点击时,我都会切换表视图单元格的高度以显示UIView。我还需要检测UIView的某些组件的点击。

- > tablecell1

- > UIView1高度h1

- > tablecell2

- > UIView2身高h2

细胞的细胞高度应根据UIView的大小而变化。目前我在打电话 tableView:heightForRowAtIndexPath:用于改变单元格点击的高度。但是,如果UIViews具有可变高度并且更大的视图被剪切,则这不起作用。

有更好的解决方法吗?

1 个答案:

答案 0 :(得分:0)

好的,你的控制器不会调用真正的快速tableView:heightForRowAtIndexPath:

在动态调整单元格大小时,我经常遇到的最大问题是在表格布局过程中很早就调用了heightForRowAtIndexPath,因此在询问tableview布局之前必须知道每个单元格的高度。无论如何,我将假设您正在使用自定义表格视图单元格并在其中放置了UIView ...如果您没有,请执行此操作。

首先:将一个类函数抛出到名为heightNeededForTableViewCellWithView:(UIView *)view的CustomTableViewCell中,并确定您想要的高度,处理视图为零的条件以及default大小应该是什么。

第二:调用tableView:heightForRowAtIndexPath:时调用此类函数,并且由于您拥有控制器中的数据源,因此可以基于您想要为该行显示的视图动态返回heightNeededForTableViewCellWithView:viewAtRow

第三:当用户点击一个单元格时,记住他们点击了哪个索引并调用[tableView reloadData],这将调用tableView:heightForRowAtIndexPath: